我正在用python处理一个脑电图信号分析问题。我需要删除edf格式的信号,这是使用MNE加载的第一分钟以下和第六分钟以上的录音,并通过一个带通滤波器。我不熟悉MNE,所以在将其转换为原始NumPy数组格式后,使用scipy进行修剪和过滤。代码如下所示。由于采样率为100 Hz,我假设第一分钟将包含6,000个样本,接下来的5分钟将包含30000个以上的样本,这就是为什么我只采用raw_datai。
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?
发布于 2021-01-22 00:53:49
要只选择信号的一部分,可以在mne-python中执行以下操作:
raw.crop(tmin=60, tmax=360)( tmin和tmax参数以秒为单位)
请记住,过滤将导致边缘伪影,因此最好先裁剪数据,以便留下您感兴趣的更宽的信号段,这样在过滤之后,您可以再次裁剪,丢弃边缘伪影。mne-python中的过滤也很简单:
raw.filter(1, None)这将执行1 Hz高通FIR滤波。要了解有关mne-python中过滤的更多信息,请查看this tutorial和this detailed detailed tutorial/discussion
https://stackoverflow.com/questions/64629271
复制相似问题