有谁知道如何使用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
}
}
我的问题是如何将这个基本算法转换为多相滤波器,因为它还有一个步骤作为下采样。我不明白我应该做什么?过滤然后下采样?或者有没有办法将两者结合起来呢?
答案 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}}。