赞
踩
EEG工具库MNE学习笔记(1)
Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象。
# 引入python库 import mne from mne.datasets import sample import matplotlib.pyplot as plt # sample的存放地址(可以不使用,直接将要分析的文件的地址用下面的fname表示即可) # data_path=sample.data_path() # 该fif文件存放地址(要分析的文件) fname='E:\Python_Code\BCI_Code\Data\MNE-sample-data\MEG\sample\sample_audvis_raw.fif' """ 将上述文件数据读成raw结构的数据 """ raw=mne.io.read_raw_fif(fname) print(raw) print(raw.info)
红框中标出的是n_channels x n_times
bads:不良通道
ch_names:通道名称
sfreq:采样频率
data, times = raw[picks, time_slice]
picks:是根据条件挑选出来的索引;
time_slice:时间切片
想要获取raw中所有数据,以下两种方式均可:
data,times=raw[:]
data,times=raw[:,:]
"""
案例:
获取10-20秒内的良好的MEG数据
"""
# 根据type来选择 那些良好的MEG信号(良好的MEG信号,通过设置exclude="bads") channel,
# 结果为 channels所对应的的索引
picks=mne.pick_types(raw.info,emg=True,exclude='bads')
t_idx=raw.time_as_index([10.,20.])
# raw返回所选信道以及时间段内的数据和时间点,
# 分别赋值给data以及times(即raw对象返回的是两个array)
data,times=raw[picks,t_idx[0]:t_idx[1]]
plt.plot(times,data.T)
plt.title("Sample channels")
plt.show()
我的理解是第10秒对应的数据的索引和第20秒对应的数据的索引。
注:data的数据格式是[通道个数,数据个数],times的数据格式是[数据个数,]
"""
sfreq:采样频率
"""
sfreq=raw.info['sfreq']
#获取1-3秒内通道0,1,2,3,4的MEG数据
data,times=raw[:5,int(sfreq*1):int(sfreq*3)]
plt.plot(times,data.T)
plt.title("Sample channels")
plt.show()
"""
绘制SSP矢量图
"""
raw.plot_projs_topomap()
plt.show()
注:SSP为信号空间投影
"""
绘制电极位置
"""
raw.plot_sensors()
plt.show()
"""
绘制指定通道的功率谱图
"""
picks = ['eeg']
raw.plot_psd(picks=picks)
plt.show()
注:通道或数据太多会出现电脑内存不够用的情况。
"""
绘制通道频谱图作为topography
"""
raw.plot_psd_topo()
plt.show()
出现如下错误:
网上说是电脑内存不够的原因,还未解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。