使用MNE数据集分析脑电图中的频率变化特征
发布时间:2024-01-08 07:27:38
脑电图(Electroencephalogram,EEG)是一种用于记录人类或动物大脑电活动的非侵入性技术。EEG信号可以通过频率分析来研究脑功能,在诸如睡眠、注意力、认知和情绪方面具有重要的应用价值。
MNE是一个用于处理EEG/MEG数据的Python库,提供了强大的工具和方法来分析和可视化脑电图数据。以下是一个使用MNE数据集分析脑电图中频率变化特征的示例。
首先,我们需要导入MNE库和一些数据集,例如MNE自带的示例数据集:
import numpy as np import matplotlib.pyplot as plt import mne # 导入MNE自带的数据集 from mne.datasets import sample # 设置数据集路径 data_path = sample.data_path()
接下来,我们可以加载示例数据集中的一个主题的EEG数据。例如,我们可以加载示例数据集中的一个睡眠样本数据:
# 设置文件路径 file_path = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif' # 读取原始数据 raw = mne.io.read_raw_fif(file_path, preload=True) # 打印原始数据信息 print(raw.info)
然后,我们可以进行一些数据预处理操作,例如重新参考数据、滤波和剔除伪迹等:
# 重新参考数据 raw.set_eeg_reference() # 设置刺激标记 events = mne.find_events(raw) # 滤波处理 raw.filter(1, 40) # 剔除伪迹 picks = mne.pick_types(raw.info, meg=False, eeg=True) raw.plot(duration=60, order=picks, n_channels=len(picks), remove_dc=False)
接下来,我们可以使用MNE库中的频率分析方法来计算频谱图和功率谱密度。频率分析可以帮助我们了解不同频率带中的脑电图活动。
例如,我们可以计算脑电图不同频率带的能量谱密度:
# 定义不同频率带的范围
freq_bands = {'alpha': [8, 12],
'beta': [13, 30],
'gamma': [30, 80]}
# 基于不同频率带计算能量谱密度
psds, freqs = mne.time_frequency.psd_welch(raw, fmin=1, fmax=40)
# 绘制不同频率带的能量谱密度图
plt.figure(figsize=(10, 6))
for band in freq_bands:
freq_range = freq_bands[band]
band_power = psds[:, :, (freqs >= freq_range[0]) & (freqs <= freq_range[1])].mean(axis=(2))
plt.plot(raw.times, band_power[0], label=band)
plt.xlabel('Time (s)')
plt.ylabel('Power Spectral Density (dB/Hz)')
plt.legend()
plt.show()
最后,我们可以通过定义不同的试验条件或任务,进一步研究EEG信号中不同频率带的变化特征。例如,我们可以比较不同试验条件下的频率变化特征:
# 定义试验条件
conditions = ['Condition 1', 'Condition 2', 'Condition 3']
# 计算不同试验条件下的频率变化特征
freq_changes = []
for condition in conditions:
epochs = mne.Epochs(raw, events, event_id=condition, tmin=-0.5, tmax=1.5, baseline=None)
psds, freqs = mne.time_frequency.psd_welch(epochs, fmin=1, fmax=40)
freq_changes.append(psds.mean(axis=0))
# 绘制不同试验条件下的频率变化特征
plt.figure(figsize=(10, 6))
for i, condition in enumerate(conditions):
freq_change = freq_changes[i]
plt.plot(freqs, freq_change.mean(axis=0), label=condition)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power Spectral Density (dB/Hz)')
plt.legend()
plt.show()
通过以上例子,你可以使用MNE库对脑电图数据进行频率分析,并研究不同频率带中的变化特征。这些分析技术可以帮助我们深入了解脑电活动与脑功能之间的关系,并在医学诊断、脑神经科学研究和脑机接口等领域发挥重要作用。
