如何用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
相关产品推荐
相关产品推荐

