Как уменьшить частоту среза цифрового фильтра?

Я создал фильтр низких частот Баттерворта в 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 путем экстремального понижения выборки данных.

Другие вопросы по тегам