这是我写的第一篇文章,主要是害怕在我想要这个程序的时候找不到,同时也为想用mne处理. mat类型脑电数据的人提供了一种参考方法。 其实我也刚正常执行了程序。 对于此过程((=ori_custom_epochs )‘right _ hand’).average ).plot ) time _ unit=‘s’)
plt.show () )不太清楚。
如果有什么问题的话,请多多关照。 哈哈。
由于希望用mne库的ICA方法消除脑电数据的伪迹, GDF和. EDF类型的脑电数据采用mne中的ICA方法易于在网上找到相似的代码,但找不到用. mat数据类型处理的代码。
我也利用mne从. mat中获取原始数据,构建raw,用ICA法处理,但总是添加eeg类型时(例如raw.set_channel_types ) (EEG-af3’: )
下图为未添加eeg类型时脑电图,正常。
但是,要利用mne库的过滤和ICA方法,需要为每个通道添加类型。 例如,eeg、eog。 下图是为每个通道添加类型的脑电波,明显是错误的。
之后,我们发现可以构建Epochs类型的脑电图,并从一开始就创建epoch对象
目前,在自己获得的数据库中也已成功创建。
导入编号为NP
import scipy.io
导入MNE
import matplotlib.pyplot as plt
path=r’e : 软件安装 python 1111111111111dataset _ 2003 _ BCI _ competition _ ii _ dataset iii _ dataset
raw _ data _1=scipy.io.load mat (path )
raw _ data=raw _ data _1[‘x _ train’].t # raw _ data _ 13360140、3和1152
已获取#####events:140x3
label _1=raw _ data _1[‘y _ train’]
#print(label_1,label_1.shape ) ) ) ) ) )。
events=NP.zeros ([ 140,3 ],dtype=int ) )。
print(aaaaa ),type ) (events ) ) ) ) ) ) ) ) ) ) ) )。
# print (‘aaaaa’,label _1[0] ) ) ) ) ) ) ) )。) ) )。
对foriinrange (0,140,1 ) :#进行序列号
events[i,0]=i
events[i,2]=label_1[i][0]
创建event_id
events_id=dict(right_hand=1,left_hand=2) ) ) ) ) ) )。
创建epochs对象
sfreq_1=128
ch _ names _1=[‘C3’、‘cz’、‘C4’]
ch _ types _1=[‘EEG’、‘EEG’、‘EEG’]
info=MNE.create _ info (ch _ names=ch _ names _ 1,ch_types=ch_types_1,sfreq=sfreq_1) )
custom _ epochs=MNE.epochs array (raw _ data,info,events,tmin=0,event_id=events_id ) ) ) )。
打印(custom _ epochs ) )
ori _ custom _ epochs=custom _ epochs.copy (#复制原始数据
#ICA处理
ICA=MNE.preprocessing.ICA (n _ components=3,random_state=97,method=‘fa stica’) )
ICA.fit(ori_custom_Epochs ) )。
#显示
_=custom _ epochs [‘right _ hand’].average ().plot ) time _ unit=‘s’] ]
_=ori _ custom _ epochs [‘right _ hand’].average ().plot ) time _ unit=‘s’] ]
plt.show () )
接下来是程序成功执行后的第一张图像未由ICA处理。 我觉得是对的,不太确定。
这是脑电数据经过ICA处理的图,即使对比上下两幅图,我也觉得变化不大。