带阻滤波器

信息处理 过滤器 Python
2022-01-28 18:14:52

我正在尝试制作带阻数字滤波器。我使用了巴特沃斯信号库来制作高通滤波​​器,但是使用相同的技术我无法实现这个带阻滤波器。这是一个例子:

from scipy import signal

Bx = data.data[0,]
By = data.data[1,]

Bxfft = (Bx[100:-100])
Byfft = (By[100:-100])

Sampling = float(266336) / 300
HalfSampling = float(Sampling) / 2
Wn = float(1) / HalfSampling
b, a = signal.butter(3, Wn, 'high')
BxHPF = signal.filtfilt(b, a, Bxfft)
ByHPF = signal.filtfilt(b, a, Byfft)

所以对于我的带阻滤波器,我需要截止 50 Hz,所以我尝试在 49.9 Hz 和 Highcut 的 50.1 Hz 上进行低切,并且订单确定为 3。您有什么想法如何实现吗?

1个回答

我找到了答案,也许有人会使用它。

 def butter_bandstop_filter(data, lowcut, highcut, fs, order):


        nyq = 0.5 * fs
        low = lowcut / nyq
        high = highcut / nyq

        i, u = butter(order, [low, high], btype='bandstop')
        y = lfilter(i, u, data)
        return y