【问题标题】:Zero Phase Filter implementation in C same as 'filtfilt' function that we have in python scipy libraryC 中的零相位滤波器实现与我们在 python scipy 库中的“filtfilt”函数相同
【发布时间】:2020-12-24 18:01:15
【问题描述】:

我有一个双二阶滤波器的 C 实现。我想做零相位滤波。为此,我首先将信号沿正向传递,然后对信号进行时间反转并再次通过滤波器。但我没有得到正确的输出。

在 python 的 filtfilt 函数中。它们也有一些使用 lfilter_zi(b,a) 计算的初始条件,它作为参数在 fwd 和 bwd 方向上两次传递给 lfilter 函数,还完成了一些填充。

在 C 中实现时,我们是否还需要为过滤器状态做填充和初始条件? 谢谢

【问题讨论】:

    标签: python c scipy signals signal-processing


    【解决方案1】:

    没错,你需要正确设置biquad的初始状态才能重现scipy的filtfilt。否则,您可能会在信号边缘附近得到奇怪的输出。 scipy.signal.filtfilt documentation 提到了这篇论文,它在method="gust" 时使用:

    F。古斯塔夫森,“Determining the initial states in forward-backward filtering”,信号处理汇刊,卷。 46,第 988-992 页,1996 年。

    或者您可以查看scipy's implementation 看看他们是如何做到的。

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 2017-12-17
      • 1970-01-01
      • 2023-03-23
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2014-05-11
      相关资源
      最近更新 更多