Я пытаюсь использовать полосовой фильтр для сигналов ЭКГ,
это код:
from scipy.signal import butter
def bandpass_filter(self, data, lowcut, highcut, signal_freq, filter_order):
nyquist_freq = 0.5 * signal_freq
low = lowcut / nyquist_freq
high = highcut / nyquist_freq
b, a = butter(filter_order, [low, high], btype='band', analog=False)
y = lfilter(b,a, data)
return y
def detect_peaks(self):
self.filtered_ecg_measurements = self.bandpass_filter(ecg_measurements,
lowcut=self.filter_lowcut,
highcut=self.filter_highcut,
signal_freq=self.signal_frequency,
filter_order=self.filter_order)
self.signal_frequency = 250
self.filter_lowcut = 0.0
self.filter_highcut = 15.0
self.filter_order = 1
Эта ошибка появляется каждый раз, когда я пытаюсь запустить эту функцию:
Traceback (most recent call last):
File "D:/Project/code/untitled/test.py", line 297, in <module>
log_data=True, plot_data=True, show_plot=False)
File "D:/Project/code/untitled/test.py", line 98, in __init__
self.detect_peaks()
File "D:/Project/code/untitled/test.py", line 135, in detect_peaks
filter_order=self.filter_order)
File "D:/Project/code/untitled/test.py", line 256, in bandpass_filter
b, a = butter(filter_order, [low, high], btype='band', analog=False)
File "C:\Users\AppData\Roaming\Python\Python36\site-packages\scipy\signal\filter_design.py", line 2394, in butter
output=output, ftype='butter')
File "C:\Users\AppData\Roaming\Python\Python36\site-packages\scipy\signal\filter_design.py", line 1959, in iirfilter
raise ValueError("Digital filter critical frequencies "
ValueError: Digital filter critical frequencies must be 0 < Wn < 1
текст ошибки:
Критические частоты цифрового фильтра должны быть 0