【发布时间】:2021-02-14 03:34:50
【问题描述】:
我正在使用 python 解决脑电图信号分析问题。我需要删除使用 MNE 加载的 edf 格式信号的第 1 分钟以下和第 6 分钟以上的记录,并将其通过带通滤波器。我对 MNE 不熟悉,因此在将其转换为原始 NumPy 数组格式后使用 scipy 进行修剪和过滤。代码如下。由于采样率为 100 Hz,我假设第一分钟将包含 6000 个样本,接下来的五分钟将包含 30000 个样本,这就是为什么我只使用 raw_data[i][6000:36000]。
filtered_data[i] = butter_bandpass_filter(raw_data[i][6000:36000], lowcut, highcut, fs, order=5)
butter_bandpass_filter 定义如下
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band',analog=True)
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = lfilter(b, a, data)
return y
但我觉得这不是正确的方法。有没有办法使用 MNE-Python 而不是将其转换为 ndarray 或使用 scipy 来完成上述任务?
【问题讨论】:
标签: python signals filtering mne-python eeglab