微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用MNE整理和过滤信号-Python

如何解决使用MNE整理和过滤信号-Python

我正在研究python的EEG信号分析问题。我需要删除使用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,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,order=5):
   b,a = butter_bandpass(lowcut,order=order)
   y = lfilter(b,a,data)
   return y

但是我不觉得这是正确的方法。有没有办法使用MNE-Python来完成上述任务,而不是将其转换为ndarray或使用scipy?

解决方法

要仅选择信号的一部分,您可以在 mne-python 中执行以下操作:

raw.crop(tmin=60,tmax=360)

tmintmax 参数以秒为单位)

请记住,过滤会导致边缘伪影,因此最好先裁剪您的数据,以便留下您感兴趣的更宽的信号段,因此在过滤后您可以再次裁剪,删除边缘文物。 在 mne-python 中过滤也很简单:

raw.filter(1,None)

这将执行 1 Hz 高通 FIR 滤波。要了解有关 mne-python 中过滤的更多信息,请查看 this tutorialthis detailed detailed tutorial/discussion

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。