Я пытаюсь разработать простой полосовой фильтр Баттерворта в SciPy и получаю некоторые странные результаты.
import scipy.signal as signal
import numpy as np
import matplotlib.pyplot as plt
def butter_bandpass(lowcut, highcut, fs, freqs,order=3, label=None):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
sos = signal.butter(order, [low, high], btype='band', output='sos')
w, h = signal.sosfreqz(sos,worN=freqs,whole=True,fs=fs)
return w,h
freqs = 650
for i in np.arange(1,10):
w,h = butter_bandpass(0.01, 0.1, fs=1/0.68, freqs=freqs, order=i)
plt.plot(h)
Это дает странные результаты, как видно на изображении ниже (фильтры Баттерворта порядка 1-10). Я думал, что фильтр должен становиться все более прямым angular по мере увеличения порядка?
Кто-нибудь знает, как создать простой фильтр Баттерворта в SciPy?