对于M抽头的一般FIR Filter的伪代码实现

来源:互联网 发布:追星软件哪个最好 编辑:程序博客网 时间:2024/06/05 18:29

/*---------------------------------------------------------------------

一般的M抽头FIR Filter C伪代码

输入    : x[]      输入样本点数N

冲击响应 : h[]      M抽头

输出    : y[]      N个输出

---------------------------------------------------------------------*/

 

#define    N      1000       // 序列为1000

#define       M      32         // 32抽头

 

void FIR( double x[], double h[], double y[ ])

{

    memset(y, 0, N * sizeof(double));

   

    int n, k;

    for( n=0; n<N; n++ )

    {

       /*

        * '过去的M-1个样本点和自身'作为滤波范围

        */

       for(k=0; k<M; k++)

       {

           y[n] += h[k] * x[n-k]

       }

    }

}

 

n个输出是取决于前M个输入和h

y(n) = h(0)*x(n) + h(1)*x(n-1) + ... h(M-1)*x(n-(M-1))

就是 h(k) 与 x[n] 的卷积, 卷积结构为y(n)