This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28335的FIR滤波算法省时问题

最近在做数据处理的问题,有用到低通滤波器,参考网上给的FIR滤波器的写法,使用和窗函数卷积的方法来达到

滤波的效果,因为信号数据是小数,结果发现卷积运算耗时太长,不知有没有更简单的算法或者有可以优化的地方

?希望各位专家指导一下,万分感谢!下面是我的卷积程序

/*=============================================================         

功能  算法原理:对位相乘求和法实现卷 形参:xn信号数组长度、hn窗函数长度 x 为信号数组,h 为窗函数数组,y 为输出数组

注意:输出序列长度为xn+hn-1;存放内容为输出数组的 0~(xn+hn-2)。

==============================================================*/

void LinearConvolution(Uint16 xn,Uint16 hn,float *x,int *h,float *y) 

 {   

   Uint16 m,n,k,l;    Uint16 yn;      //输出序列y的长度   

   yn=xn+hn-1;

 

    k=yn-1;    

   while(k-->0)  y[k]=0;      

y[0]=0;                         //输出数组初始化      

 

 

k=yn-1;

   for(m=hn-1;m>0;m--)      //将*h作为被乘数    

    {        l=k;       

              for(n=xn-1;n>0;n--)  //数组x[n]的1~(xn-1)与h[i]逐一相乘     

                          {            y[l]+=h[m]*x[n];      l--;   }    

               y[l]+=x[0]*h[m];        

        k--;  }  

    l=k;   

   for(n=xn-1;n>0;n--)  

    {        y[l]+=h[0]*x[n];     l--;     }

     y[l]+=x[0]*h[0]; }