【发布时间】:2013-02-22 14:40:08
【问题描述】:
有谁知道如何使用 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
}
}
我的问题是我应该如何将这个基本算法转换为多相滤波器,因为它还有一个向下采样的步骤。我不明白我应该首先做什么,过滤然后下采样?还是有办法将两者结合起来做?
【问题讨论】:
-
while (<data_available>) output = downsample(fir(input), decimation_factor); -
我不认为这是一个不好的问题,但是 FAQ 缺少它并且需要一些工作。你知道如何创建一个普通的过滤器吗?以及如何进行下采样?您是否尝试过创建多相滤波器但没有成功,或者您是否坚持提出算法?您现在具体陷入了什么困境,您的努力和研究将您带到了哪里?
-
是的,我知道如何进行过滤。它是输入信号与脉冲响应的卷积,所以你只需要调用卷积函数。我的意思是卷积的基本思想。简单来说,代码是这样的。for ( i = 0; i
-
真正的问题是如何实现一个多相滤波器,因为它多一步作为下采样。我不明白我应该做什么第一次我做过滤然后下采样?或者有没有办法将两者结合起来?
标签: c signal-processing