Python中的高通滤波器出了什么问题?

时间:2013-08-14 07:40:35

标签: python filter scipy signals signal-processing

# Specifications for HPF
Wp = 0.01 # Cutoff frequency 
Ws = 0.004 # Stop frequency 
Rp = 0.1 # passband maximum loss (gpass)
As = 60 # stoppand min attenuation (gstop)
b,a = fd.iirdesign(Wp, Ws, Rp, As, ftype='butter')
y = sig.lfilter(b, a, x, axis=-1)

我调整了参数但结果从未按预期显示。

例如,当我减少Wp时,我期望在过滤后存在更多频率成分。因此,我希望看到一个更“不稳定”的信号。

然而,到处都是0。

似乎我对这个HPF的理解是错误的。

这样做是否正确实施HPF?

如何调整参数?

1 个答案:

答案 0 :(得分:3)

似乎你的过渡带对于iirdesign工具来说太紧了。由此产生的滤波器在低频时具有较大的增益提升,从根本上创造了低通滤波器。尝试使用例如

创建过滤器
Wp = 0.1
Ws = 0.04

这应该会给你一个高通滤波器。尝试使用octave或matlab freqz函数绘制结果系数,以检查它是否产生了所需的滤波器响应。

如果您必须进行如此狭窄的过渡,则可以尝试除butterworth过滤器类型以外的其他过滤器。例如,椭圆设法产生所需的截止,转换和停止,但在通带和阻带上引入振铃(以及非线性相位响应)。

b, a = fd.iirdesign(0.1, 0.04, 0.1, 60, ftype='ellip')