首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MNE - Python对信号进行修剪和过滤

使用MNE - Python对信号进行修剪和过滤
EN

Stack Overflow用户
提问于 2020-11-01 14:33:38
回答 1查看 306关注 0票数 0

我正在用python处理一个脑电图信号分析问题。我需要删除edf格式的信号,这是使用MNE加载的第一分钟以下和第六分钟以上的录音,并通过一个带通滤波器。我不熟悉MNE,所以在将其转换为原始NumPy数组格式后,使用scipy进行修剪和过滤。代码如下所示。由于采样率为100 Hz,我假设第一分钟将包含6,000个样本,接下来的5分钟将包含30000个以上的样本,这就是为什么我只采用raw_datai。

代码语言:javascript
复制
filtered_data[i] = butter_bandpass_filter(raw_data[i][6000:36000], lowcut, highcut, fs, order=5)

butter_bandpass_filter的定义如下

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 00:53:49

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

代码语言:javascript
复制
raw.crop(tmin=60, tmax=360)

( tmintmax参数以秒为单位)

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

代码语言:javascript
复制
raw.filter(1, None)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64629271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档