| 源程序完全参照库文档,文档里的小错误也发现并修改了,可还是不行,想请香水城帮忙看下, 使用FIR库滤波后的数据
 使用FIR库滤波后的数据   MATLAB滤波后的数据
 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库我使用的肯定不对了,但请有人帮忙看下
 |