源程序完全参照库文档,文档里的小错误也发现并修改了,可还是不行,想请香水城帮忙看下,
使用FIR库滤波后的数据
MATLAB滤波后的数据
两个滤波使用的系数一样,数据都是采用的实际数据,只是不是同一次采集的,我感觉MATLAB的滤波比较靠谱点,但为什么FIR的库不能呢,或者库的使用还需要那些注意点,请香水城和所有高手帮忙看下,
#define M 16 /*number of coefficients*/
#define N 16 /*number of output samples*/
COEFS fir_coefs;/*coefficients structure*/
int a[N];/*filter output vector*/
int x0[N];
short x[M+N-1];/*filter input vector*/
short h[M]={3099, 1137, 1305, 1456, 1586, 1687, 1758, 1795, 1795,
1758, 1687, 1586, 1456, 1305, 1137, 3099};/*filter coefficients vector*/
uint16_t xyz_FIR[16];
void FIR_filter(u32 k)
{
u8 j;
for (j=0;j<16;j++)
{
x0[j] = ADCConvertedValue[j]+offsetx;
x[j+16]= x0[j];
}
if (k>1) //第一次的16个数据无法完成FIR滤波
{
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*/
}
for(j=0;j<15;j++)
{
x[j]= x0[j+1];
}
if (k>1) //第一次的16个数据无法完成FIR滤波
{
for (j=0;j<16;j++)
{
xyz_FIR[j]=a[j]/65535;
}
}
}
这个前几天我已经发帖求助了,但是没有人解答,这段时间我又用MATLAB仿真了下,更加肯定了,FIR库我使用的肯定不对了,但请有人帮忙看下 |