我正在考虑在 python 中设计一个带通巴特沃斯滤波器,但是,我不确定我是否正确设计了我的滤波器。我有以下内容:
- 高截止频率 = 200Hz
- 低截止频率 = 10Hz
- 采样频率 = 1000Hz
- 对于我的数据,我使用了 Filter order = 6
我的代码定义如下:
# section of my imports:
from scipy.signal import find_peaks, find_peaks_cwt, argrelextrema, welch, lfilter, butter, savgol_filter, medfilt, freqz, filtfilt
from scipy.signal import argrelextrema, filtfilt, butter, lfilter
def butter_bandpass(lowcut, highcut, fs, order):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='bandpass', output='ba')
# sos = butter(order, [low, high], btype='bandpass', output='sos')
return b, a
# return sos
def butter_bandpass_filter(data, lowcut, highcut, fs, order):
# sos = butter_bandpass(lowcut, highcut, fs, order=order)
# y = signal.sosfilt(sos=sos, x=data)
# y = signal.sosfiltfilt(sos=sos, x=data)
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = filtfilt(b=b, a=a, x=data)
# y = lfilter(b, a, data)
return y
我怎样才能获得通带和阻带衰减,我在哪里可以找到所需的方程来获得我的巴特沃斯滤波器设计方程 |H(w)|?类似于以下链接:(带通和带阻滤波器设计)。我以弧度/秒计算了数字频率:
- wh = 400π弧度/秒
- wl = 20π 弧度/秒
- w(ah) ≈ 21.93 弧度/秒
- w(al) ≈ 1.096 弧度/秒
- W ≈ 20.84 弧度/秒
- w^2 ≈ 578.53
最后的步骤是从低通到带通的原型转换,并将方程转换为双线性变换技术 (BLT) 以获得数字滤波器缺失。那么,我需要什么等式来获得数字滤波器?