我正在尝试使用 Python 中的 Butterworth 过滤器,如此线程中所述,具有以下功能:
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = lfilter(b, a, data)
return y
在不应用过滤器的情况下,我的数据的 FFT 输出给出了以下图:

但是,在应用上面的过滤器后:
lowcut = 1.0
highcut = 50.0
x2_Vtcr = butter_bandpass_filter(x_Vtcr, lowcut, highcut, fs, order=4)
其中 fs 是采样频率(在我的情况下为 250),我得到 FFT:

看起来滤波器将频率向左移动,而我没有得到应有的峰值。知道为什么会这样吗?
谢谢!