我很难找到使用 python/scipy/numpy 实现带通或高通滤波器的文档。
不过,我可以轻松地创建和应用低通滤波器,所以我问:
对信号进行低通滤波,然后从原始信号中减去结果,以获得高频,在概念上是否正确?
此外,如果有人在 Python 中有一个简单的带通滤波器示例(最好使用 numpy 和 scipy 库),我将非常感激。
我寻找的是这样的:
filtered_signal = band_pass(original_signal, rate, low=20, high=500)
谢谢你的帮助!
编辑:使用 scipy,我将其用作低通,效果很好:
import numpy, scipy.signal
def firfilt(interval, freq, sampling_rate):
nfreq = freq/(0.5*sampling_rate)
taps = sampling_rate + 1
a = 1
b = scipy.signal.firwin(taps, cutoff=nfreq)
firstpass = scipy.signal.lfilter(b, a, interval)
## second pass to compensate phase delay
secondpass = scipy.signal.lfilter(b, a, firstpass[::-1])[::-1]
return secondpass