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

2019-03-26 15:26发布

  • 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条回答
ljj3166
1楼-- · 2019-03-27 00:49
 精彩回答 2  元偷偷看……
caijianfa55
2楼-- · 2019-03-27 02:49
<
ljj3166 发表于 2015-1-4 22:47
相邻采样点数据客观上差距不大
是不是可以考虑一些简单的限幅或者均值就可以了吧



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


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


caijianfa55
4楼-- · 2019-03-27 13:20
wushaojay 发表于 2015-1-10 10:28
试试最小均值的方法 而且滤波的话 不考虑时间的话 是不是可以考虑蒙特卡洛的方法



时间要求比较高
风华
5楼-- · 2019-03-27 18:43
楼主,本人最进也在做数字fir滤波器,楼主使用的是哪款dsp和数模芯片?
新手求学
6楼-- · 2019-03-28 00:17
 精彩回答 2  元偷偷看……

一周热门 更多>