用st的DSP 2.0库中的FIR滤波器,发现一个问题。
文档UM0585中的FIR例子里面:
#define M 32 /*number of coefficients*/
#define N 32 /*number of output samples*/
COEFS fir_coefs;/*coefficients structure*/
int a[N];/*filter output vector*/
short x[M+N-1] = {x0,x1...,xM+N-1};/*filter input vector*/
short h[M]={h0,h1...,hM-1};/*filter coefficients vector*/
fir_coefs.nh = M; /*Number of Coefficients for FIR*/
fir_coefs.h = h; /*Pointer on FIR coefficient vector*/
fir_16by16_stm32(a,x,&fir_coefs,N);/*performs the FIR filtering*/
其中对于滤波系数数组的定义为short ,但是在给 fir_coefs.h = h;赋值的时候,发现数据类型不同一个是有符号的,一个是无符号的。发现对于
COEFS 的定义中
typedef struct {
uint16_t *h;
uint32_t nh;
} COEFS;
是 u16的
而从matlab中计算得出的系数都是有符号的,正负都有。那么哪一种才是正确的呢? |