脑电数据预处理

记录一个数据洁癖在脑电数据预处理阶段的经验和踩过的坑,若有不对的地方请批评指正。

我的机器是BV64导,实验是类似于静息态的任务态。

预处理顺序:

1、定位电极

2、删除无用电极,我这里是IO活动电极

3、高低通、NOTCH滤波

到这里是可以批处理的,代码如下:(路径和文件名需要换成各位自己的)

clc;clear all;close all
for i = 1:22
EEG = pop_loadbv('D:\00data\eegdata\', strcat('subject', num2str(i), '.vhdr'),[], []);
EEG=pop_chanedit(EEG, 'lookup','D:\\MATLAB_2013b_install\\toolbox\\eeglab\\plugins\\dipfit2.2\\standard_BESA\\standard-10-5-cap385.elp');
EEG = pop_select( EEG,'nochannel',{'IO'});
EEG = pop_eegfiltnew(EEG, [], 0.5, 6600, true, [], 1);
EEG = pop_eegfiltnew(EEG, [], 45, 294, 0, [], 1);
EEG = pop_eegfiltnew(EEG, 48, 52, 1650, 1, [], 1);
EEG = pop_eegfiltnew(EEG, 98, 102, 1650, 1, [], 1);
EEG = pop_saveset( EEG, 'filename',strcat(num2str(i), '.set'),'filepath','D:\\00data\\1filter\\');
end

4、select data using event把不同任务数据成段提取出来

clc;clear all;close all
for i = 1:22
EEG = pop_loadset('filename',strcat(num2str(i),'.set'),'filepath','D:\00data\1filter\\');
EEG = eeg_checkset( EEG );
EEG = pop_rmdat( EEG, {'S 10'},[0 180] ,0);
EEG = eeg_checkset( EEG );
EEG = pop_saveset( EEG, 'filename',strcat(num2str(i),'.set'),'filepath','D:\\00data\\2intention\\rest\\');
EEG = eeg_checkset( EEG );
end

5、分段,用代码分段。

clc;clear all;close all
for i = 1:22
EEG = pop_loadset('filename',strcat(num2str(i),'.set'),'filepath','D:\\00data\\2intention\\rest\\');
EEG = eeg_regepochs(EEG, 'recurrence', 1, 'limits',[0 1], 'rmbase',NaN);
EEG = pop_saveset( EEG, 'filename',strcat(num2str(i), '.set'),'filepath','D:\\00data\\3epoch\\rest\\');
end

6、去坏段,别去太狠了,否则数据损失太多,而且ICA也是可以修正一些的,我一开始去的狠,导致都没有眼漂成分。

7、接下来重参考。64导不算密集,能不能用平均参考?目前我读的领域内文献还是基本双侧乳突,因此,我这里是用TP9和10作参考电极。(100以上通道再考虑平均参考吧,完全静息态也可以平均参考。如果是平均参考,可以在预处理最后一步做,在保证数据干净后做)。

8、ICA

先通过map删成分。经验是,前两个一般是眨眼和眼漂,必选。

后面如果有全头绿,只有耳朵附近的一点高能量,则是坏成分,删。但!是如果不是全头绿,而是有激发大范围的高能,同时耳朵处一点红或蓝,说明这个成分里有有用的成分,就不能当做坏成分删掉。

肌电在15hz以上,如果数据分析后期要分析高频,那就得删删肌电了。一般肌电在滤波时删掉一些了,但难免也会在ica之后也出来一些,也是要注意是完全坏成分再删掉,表现为只有一两个trial是能量高的。还有常见的成分是均匀集中在后半部分的心电。以及坏导成分。

坏成分识别的方法:

(1)成分的折线图10hz突然高了,正常应该是逐渐下降或持平。

(2)全头绿,只有一点高能

不确定的就不要删了,免得删掉有用信息。

这个ICA还是要看个人感觉,比较主观,千万别纠结。

9、去除极端值

100 -100

10、手动检查

删除明显的伪迹。

这步也比较纠结,有的人说个别波形凸起对后面分析不影响的,但我记得有人说过别让这种明显的伪迹混入后续分析。我个人还是习惯把一些非常明显眼电等删掉,删的幅度还是比较大的。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
脑电数据的预处理是为了去除噪声、伪迹和其他干扰,以提取出有效的脑电信号。在Python中,可以使用多种库和工具进行脑电数据的预处理,下面介绍一些常用的方法。 1. 导入库和数据:首先,你需要导入一些常用的库,如numpy、scipy和matplotlib,并加载你的脑电数据。可以使用一些库(如mne)来读取常见的脑电数据格式(如EDF、BDF等)。 2. 去除噪声:去除噪声是预处理的关键步骤之一。常用的方法包括滤波和去伪迹。滤波可以使用数字滤波器(如Butterworth滤波器)来去除低频和高频噪声。去伪迹可以通过一些算法(如平均参考、CAR参考等)来减少电极间的共模噪声。 3. 剔除伪迹:伪迹是由于运动或其他干扰引起的数据畸变。可以使用运动估计算法(如ICA)来识别和剔除这些伪迹。 4. 修正偏移:脑电信号可能存在偏移,即信号整体上升或下降。可以通过减去信号均值或进行基线校正来修正偏移。 5. 降采样:对于长时间的脑电数据,可以考虑将数据进行降采样,以减少计算负担。 6. 分割数据:根据实验设计,可以将脑电数据分割成不同的试验段或事件段,以便进一步分析。 这只是脑电数据预处理的一些基本步骤,具体的方法和流程可能会根据数据类型和研究目的而有所不同。你可以根据实际需求选择适合的方法和工具进行预处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值