最近,我阅读了几篇使用零滞后巴特沃斯滤波器(低通和高通)的论文。
我对(巴特沃斯)滤波器有相当的了解,但是我们如何设计一个零延迟的滤波器呢?有人可以解释一下这是如何工作的吗?
据我了解,任何低通滤波器都会产生固有延迟。
或者这是否涉及双向过滤?
最近,我阅读了几篇使用零滞后巴特沃斯滤波器(低通和高通)的论文。
我对(巴特沃斯)滤波器有相当的了解,但是我们如何设计一个零延迟的滤波器呢?有人可以解释一下这是如何工作的吗?
据我了解,任何低通滤波器都会产生固有延迟。
或者这是否涉及双向过滤?
正如您所怀疑的,本文说零滞后巴特沃斯滤波是通过将信号通过滤波器两次获得的:一次是正向,一次是反向。
这个问题在教科书中很少提及。在 Matlab 中,它是用filtfilt函数实现的。它有时被称为前向后向过滤,并与 Butterworth 以外的其他过滤器一起使用。我知道的为数不多的参考资料之一是:F. Gustafsson,Determining the initial states in forward-backward filtering ,IEEE Transactions on Signal Processing,1996。它与Linkwitz-Riley 滤波器有一些微弱的相似之处,通过以特定方式级联两个过滤器来减少单个过滤器造成的限制。此外,我无法忘记 20 年前,当我发现 filtfilt 函数时,一位熟练的同事告诉我,它被称为(语音上)a L*n[q/k][w/v]i[z/ st/tz] 过滤器(我记得我当时听过 Lunqvist),虽然我从来没有找到参考。他显然错了,欢迎提供更多的历史联系。
在频域中解释的整个操作相当于将滤波器频率响应乘以其复共轭。因此,得到的“平方滤波器”是真实的,并且具有零相位,即无延迟,但以非因果性为代价。它的阶数是原始滤波器的两倍,并且在量化其系数时可能会遇到不稳定问题。它在截止频率处的衰减也加倍。
相关讨论可以在 什么是 MATLAB 的 filtfilt或 零相位实时数字滤波器的优势中找到。