Как уменьшить частоту среза цифрового фильтра?
Я создал фильтр низких частот Баттерворта в Python. Что можно сделать, чтобы я мог снизить частоту среза до миллигерцового диапазона? Это возможно даже? Ниже приведен код, который я использовал.
def butter_bandpass(cutoff_freq, fs, order=5):
nyq = 0.5 * fs
cutoff_freq = cutoff_freq / nyq
b, a = butter(order, cutoff_freq, btype='low')
w, h = freqz(b, a)
return b, a
def butter_bandpass_filter(data, time, cutoff_freq, fs, flag, order=5):
b, a = butter_bandpass(cutoff_freq, fs, order=order)
#zi = lfilter_zi(b, a)
y = lfilter(b, a, np.array(data))
return y
1 ответ
Если частота среза слишком мала для доли Fs, фильтр 5-го порядка станет численно нестабильным (округление "ошибок" приведет к образованию NaN). Попробуйте понизить частоту дискретизации Fs путем экстремального понижения выборки данных.