该问题曾被问过,但仅在Designing an FIR notch filter with python处得到部分回答 但是答案并未解决重复使用此解决方案来构建一个滤波器的问题,该滤波器将拒绝多个不同的频率。我的感觉是,如果我们重复此操作,边缘和/或振铃效果将加在一起。为了提高效率,我只想使用这种组合滤波器执行一次FFT和逆FFT。
是否有一种方法可以使用scipy.signal.iirnotch
或类似的输出来创建一个滤波器,该滤波器将拒绝多个频率,例如在后续信号中达到峰值的那些频率?
对于一种频率,在比上面的SO链接更简单的实现中,我会这样做:
import scipy
f0 = fcuts[0]
Q = 30.0
b, a = scipy.signal.iirnotch(f0, Q, fs=fs)
filtered_data = scipy.signal.filtfilt(b, a, data)
其中fcuts
是要滤除的频率列表。 iirnotch
但是仅输出分子和分母。从理论上讲,滤波器可以彼此相乘以获得我想要的组合滤波器,并将其乘以FFT,但是scipy.signal或类似用法的使用将使我堆积滤波器并仅用一次即可过滤所有内容,例如filtfilt
?