如何在 C++ 中测试 FIR 滤波器?

信息处理 过滤器 过滤器设计 低通滤波器 有限脉冲响应
2022-02-09 00:47:43

我几乎完成了使用 C++ 设计和实现我的第一个 FIR 滤波器。它是一个 Sinc-Windowed FIR 滤波器,设计截止频率为 100 Hz,采样率为 500,滤波器阶数 M = 100。所有操作均在离散时域中进行。所以基本上我的问题是关于测试以查看我的过滤器是否正在生成所需的响应

我认为测试输出的一种方法是对其应用 DFT 并检查频域中滤波器的响应谱,但为此我必须开发一个对输出执行 DFT 的函数。

问题:为了避免这种情况,我正在寻找,

---->是否有任何方法可以在(无需应用 DFT)时域本身测试滤波器响应?

----> 如果上述方法不可行,是否有任何替代方法,例如一些具有 FT 功能的 C++ DSP 库,您可以提出建议吗?

或任何与您的经验有关的建议和建议将不胜感激。提前致谢!

1个回答

第一个基本测试可以是使用单位脉冲作为输入信号,并查看输出信号是否等于脉冲响应(即滤波器系数)。另一个简单的测试信号是单位步长。对应的输出应该是滤波器的脉冲响应的累积和,即对于,输出必须是x[n]=u[n]

y[n]=k=0nh[k],n0

如果您为这两个简单的测试信号获得了所需的响应,那是一个好的开始,但我不会就此止步。一般来说,使用 Matlab 或 Octave(免费)之类的工具或任何类似的工具非常有帮助,这些工具具有内置的过滤例程,您可以根据这些例程检查任意输入信号的例程。