任何人都知道如何使用c编程实现多相滤波器

时间:2013-02-22 14:40:08

标签: c signal-processing

有谁知道如何使用C编程实现多相滤波器。多相滤波器是滤波加下采样的组合。它使用Fir滤波器进行滤波,然后使用给定的抽取因子对其进行下采样。<​​/ p>

我理解过滤它是输入信号与脉冲响应的卷积,所以你只需要调用卷积函数。

简单来说,代码就是这样。

for ( i = 0; i < sampleCount; i++ ) 
{ 
    y[i] = 0; // set to zero before sum 
    for ( j = 0; j < kernelCount; j++ ) 
    { 
        y[i] += x[i - j] * h[j]; // convolve: multiply and accumulate 
    } 
}

我的问题是如何将这个基本算法转换为多相滤波器,因为它还有一个步骤作为下采样。我不明白我应该做什么?过滤然后下采样?或者有没有办法将两者结合起来呢?

1 个答案:

答案 0 :(得分:2)

您有代码来计算每个点。对于任何点i,该代码使用x[i-j]h[j]中的数据(循环j的值),并将结果写入y[i]。< / p>

对于下采样,您不希望所有点y[i];你只想要其中一些。因此,编写代码i,使用相同x[i-j]h[j]中的数据来计算输出值。但是,不是为i的每个值执行此操作,而是仅对抽取因子的倍数(例如,它命名为d)执行此操作,并将结果写入y[i/d]而不是{ {1}}。