我正在使用 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 来完成上述任务?