如何在 C# 上实现具有群延迟校正的 FIR 滤波器?

信息处理 无限脉冲响应 有限脉冲响应 C# 群延迟
2022-02-16 10:47:21

我阅读了有关数字滤波器的内容,并实现了 IIR 和 FIR 滤波器,我发现这种类型的滤波器具有所谓的“群延迟”。现在我知道 IIR 具有非线性群延迟,而 FIR 具有线性群延迟。

我有一个实时系统,需要通过计算机计算的高通滤波器(良好的处理器和 RAM),总是通过滤波器我会有相位失真,利用好的处理器:什么是最好的校正相位并用正确相位伪造滤波器响应的方法?

在上图中,我在右侧使用相同数量的系数扩展了我的输入信号,并尝试校正群延迟,第一次滤波,及时反转响应并再次通过滤波器并再次恢复响应在当时。结果纠正了相位,但在最后一个样本中导致了其他类型的失真。怎么了?不幸的是,我对过滤器的了解并不广泛。

注意:我使用的系数数量是 1000,Fs:6400 个样本/秒,cutOff:10 Hz。

我非常感谢任何帮助和声明。谢谢

在此处输入图像描述

1个回答

任何一种数字滤波器都会导致输出信号延迟一定数量的样本。

据我所知,您正试图通过高通滤波器(是 FIR 还是 IIR?)运行信号,并通过“第一次过滤,及时反转响应......”来纠正群延迟。我个人从未被教过或读过这样的算法来纠正群延迟。

我感到困惑的一件事是您为什么要修复群延迟。您对输入信号延迟几百个样本感到不满意吗?你要做的就是等待,一切都会好起来的。

我认为您需要修复群延迟的唯一原因是将滤波后的响应与时域中的原始信号进行比较。或者做一些比花园品种过滤更高级的事情。如果您尝试比较时域响应,则必须将参考信号延迟与高通滤波器相同的 FIR 滤波器延迟量。

如果这回答了您的问题,请回复,我将详细介绍如何延迟您的参考信号,以及如何找到 FIR 滤波器的采样延迟。您也可以谷歌“冷杉过滤器的采样延迟”。