-1

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

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

简单来说,代码应该是这样的。

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 
    } 
}

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

4

1 回答 1

2

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

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

于 2013-02-22T16:41:19.853 回答