[求助] DSP模数转换后进行FIR滤波,结果不理想

caijianfa55   2015-1-4 18:46 楼主
  • FIR滤波后,依然还存在高频毛刺,结果如下 1.jpg 2.png 滤波程序如下:
    • void fir_filter(float b[],float c[])
      {
      int i,j=0;
      float sum;
      float h[21]={
            -0.09055792262407, 0.009744804975761,  0.01838867509003,  0.03195961694651,
             0.04917012260358,  0.06836127325356,  0.08774901331544,   0.1053433191277,
              0.1194310387162,    0.128484986607,   0.1316381457976,    0.128484986607,
              0.1194310387162,   0.1053433191277,  0.08774901331544,  0.06836127325356,
             0.04917012260358,  0.03195961694651,  0.01838867509003, 0.009744804975761,
            -0.09055792262407
             };
      for(i=0;i<3000;i++)
      {
        sum=0.0;
        for(j=0;j<21;j++)
        {
         if(i >= j)
         sum+=h[j]*b[i-j];
         else
         ;
        }
        c=sum;
      }
      for(i=0;i<2980;i++)
        {
        c=c[i+20];
        }
      }









回复评论 (6)

相邻采样点数据客观上差距不大
是不是可以考虑一些简单的限幅或者均值就可以了吧
So TM what......?
点赞  2015-1-4 22:47
引用: ljj3166 发表于 2015-1-4 22:47
相邻采样点数据客观上差距不大
是不是可以考虑一些简单的限幅或者均值就可以了吧



前面那个已经是均值滤波后的了,之前我的数组只有300个数据时觉得那个FIR滤波效果还挺好的,采样数据增加到3000个以后还是原来的滤波算法,结果输出却出现了很大的毛刺
点赞  2015-1-5 10:08
引用: caijianfa55 发表于 2015-1-5 10:08
前面那个已经是均值滤波后的了,之前我的数组只有300个数据时觉得那个FIR滤波效果还挺好的,采样数据增加到3000个以后还是原来的滤波算法,结果输出却出现了很大的毛刺


试试最小均值的方法 而且滤波的话 不考虑时间的话 是不是可以考虑蒙特卡洛的方法


点赞  2015-1-10 10:28
引用: wushaojay 发表于 2015-1-10 10:28
试试最小均值的方法 而且滤波的话 不考虑时间的话 是不是可以考虑蒙特卡洛的方法



时间要求比较高
点赞  2015-1-10 17:54
楼主,本人最进也在做数字fir滤波器,楼主使用的是哪款dsp和数模芯片?
点赞  2015-7-16 20:24
楼主这个滤波后的值你是怎么输出观察的呢   经过DA吗
点赞  2015-7-26 16:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复