【问题标题】:Trimming and filtering signal using MNE - Python使用 MNE 修剪和过滤信号 - Python
【发布时间】: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


    【解决方案1】:

    要仅选择信号的一部分,您可以在 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

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多