You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的MNE读取TXT格式EEG数据并执行Welch周期图分析

用MNE处理TXT格式EEG数据并执行Welch周期图分析

一、将一维数组转换为MNE Raw对象

MNE依赖结构化的Raw对象处理EEG数据,需先构建元信息并调整数组形状适配MNE要求:

import mne
import numpy as np

# 假设一维EEG数组已加载为eeg_data,采样频率根据实际数据设置(示例为250Hz)
eeg_data = np.loadtxt("your_eeg_file.txt")  # 若已加载数组可跳过此步
sfreq = 250

# 创建Info对象,定义通道基本信息
info = mne.create_info(
    ch_names=["EEG"],  # 单通道命名,多通道可扩展为["EEG1", "EEG2"...]
    sfreq=sfreq,
    ch_types=["eeg"]
)

# 调整数组形状为MNE要求的(n_channels, n_samples)
eeg_data_mne = eeg_data.reshape(1, -1)  # 多通道则替换1为对应通道数

# 生成Raw对象
raw = mne.io.RawArray(eeg_data_mne, info)

二、可选预处理步骤

为提升后续分析精度,建议做基础滤波处理:

# 带通滤波,保留0.5-40Hz的EEG信号(参数可按需调整)
raw.filter(l_freq=0.5, h_freq=40)

三、执行Welch周期图分析

MNE内置compute_psd_welch方法可直接计算功率谱:

# 计算Welch功率谱
psds, freqs = raw.compute_psd(
    method='welch',
    fmin=0.5,  # 分析的最低频率
    fmax=40,   # 分析的最高频率
    n_fft=512, # FFT窗口长度,建议取2的幂次
    n_overlap=256  # 窗口重叠数,通常设为n_fft的一半
)

# 提取单通道功率谱数据(多通道则按索引提取对应通道)
psd_data = psds[0]

# 可视化结果(可选)
import matplotlib.pyplot as plt
plt.plot(freqs, psd_data)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power Spectral Density (µV²/Hz)')
plt.title('Welch Periodogram')
plt.show()

参数说明

  • n_fft:决定频率分辨率,公式为采样频率/n_fft,值越大分辨率越高,但计算量同步增加
  • n_overlap:重叠窗口可减少谱估计的方差,提升结果平滑度

内容的提问来源于stack exchange,提问作者Manthan Datta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:12:43