gpt4 book ai didi

python - 带通滤波器ValueError : Digital filter critical frequencies must be 0 < Wn < 1

转载 作者:行者123 更新时间:2023-12-01 17:00:51 45 4
gpt4 key购买 nike

我正在尝试对心电图信号使用带通滤波器,这是代码:

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

错误文本是:

Digital filter critical frequencies must be 0 < Wn < 1

最佳答案

可能是因为输入参数fs的原因。它必须大于 2 * Wn 中的任何一个。如 scipy/signal/filter_design.py 源代码所示:

if fs is not None:
if analog:
raise ValueError("fs cannot be specified for an analog filter")
Wn = 2*Wn/fs

之后:

if not analog:
if numpy.any(Wn <= 0) or numpy.any(Wn >= 1):
raise ValueError("Digital filter critical frequencies must be 0 < Wn < 1")

关于python - 带通滤波器ValueError : Digital filter critical frequencies must be 0 < Wn < 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145529/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com