一、软件安装
前情提要:笔者使用的是2014版的eeglab,一是因为老版本比较稳定;二是因为老版本有相关插件可以自动识别坏导,比较方便。
需要注意的是,不同版本的eeglab并不能很好地兼容MATLAB的各个版本,根据笔者的经验,2014版的eeglab不能和2022版的MATLAB兼容,但是可以在2017版的MATLAB上运行,笔者使用的也是MATLAB 2017b。
1.将eeglab工具箱路径添加到MATLAB中
简单来说就是,打开MATLAB → 设置路径 → 添加并包含子文件夹 → 选择eeglab文件夹 → 保存

2.启动eeglab
在添加完eeglab工具箱后,在命令行输入:eeglab,即可打开eeglab界面。
出现这样的界面就表明安装成功了。

二、数据预处理
1.导入原始数据
File → Import data → Using EEGLAB functions and plugins → From Brain Vis. Rec..vhdr or .adhr file → 选择需要导入的文件

因为笔者的原始数据是.vhdr后缀的,所以选择“From Brain Vis. Rec..vhdr or .adhr file”。如果大家的文件是.cnt后缀的,则选择“From Neuroscan .CNT file”,其他文件后缀也同理。
选择完文件后,弹出的弹窗一直点击“OK”就可以。


接下来会出现以下的界面,即表示导入成功。

此界面上各栏目信息含义如下:
Channel per frame:64——指本数据有64个电极通道
Frames per epoch:355440——指数据的总长度,一共是355440采样点
Epochs:1——指当前数据的段数,由于是还没有进行分段处理,因此这里显示只有一段
Events:1001——指检测到当前数据一共有1001个events
Sampling rate(Hz):500——指数据的采样率为500HZ
Epoch start- Epoch end:0.000 - 710.878——指这个分段是从0秒开始,到710.878秒结束Reference:unknown—— 指数据的参考点,由于目前还没有进行重参考所以是unknown
Channel locations:No——指是否有对电极进行定位
ICA weights:No——指是否对数据进行了独立主成分分析
Dataset size:95.9——指数据的大小
2.电极定位
将eeg数据加载到eeglab后,eeglab只能识别每个通道的名称和电压数值,但其无法知晓各个电极在头皮上的实际空间位置,因此我们必须导入电极通道位置信息, 给每个脑电通道配上准确的三维空间坐标。

弹出以下页面时,选择“OK”,表示加载默认的电极模板。

接着,会弹出电极定位的界面。由于笔者有.locs后缀文件,所以这里选择“Read locations”即可。
【补充:还有一种方法是在”Channel label”一栏找到VEO和HEO, 将VEO改成VEOG, 将HEO改为HEOG后,点击”Look up locs”, 随后eeglab会自动补全缺失的位置信息.

选择.locs后缀文件。

弹出以下界面,默认选择“OK”即可。

电极信息导入成功后,选择“OK”。

eeglab界面上Channel locations一栏从“No”变成了“Yes”,即表明电极定位成功。

3.滤波

接下来会弹出滤波界面,需要注意的是,老版eeglab需要我们分三次滤波(高通滤波、低通滤波与市电干扰)

首先设置高通滤波的频率值,高通滤波为0.1Hz,表示将高于0.1Hz的脑电波通过,将低于0.1Hz的脑电波过滤掉。

接着会弹出以下图纸和页面,选择“OK”即可。


其次,设置低通滤波的频率值,低通滤波为40Hz,表示将低于40Hz的脑电波通过,将高于40Hz的脑电波过滤掉。步骤和之前一样,故不再次重复,只展示不一样的部分。


最后,对于工频干扰,我们使用带通滤波48~52Hz进行去除。需要注意的是,这里需要选择“Notch filter the data instead of pass band”


4.降采样
这一步的目的主要在不损失关键脑电信息的前提下,降低数据量、加快运算速度、提升处理效率。
选择 Tools → Change sampling rate

弹出降采样数值设置界面,一般数值设置为500即可。

弹出界面时,默认选择“OK”。

Sampling rate数值一栏显示为500,即表示降采样成功。

5.坏导检测→插值坏导
这一步的目的在于用坏导周围良好的电极信号估算补全信号完全损坏/ 噪声过大的坏导。
选择Tools → Automatic channel rejection(这也是笔者在前文中提到的老版的优势所在,即可以自动检测坏导,非常方便)

弹出界面后,确保Electrode一栏是1:64(全部导联)后,选择“OK”。

接着,会弹出一张图纸,其中会显示检测出来的坏导(已标红),由于图纸上的导联信息字体较小且有所重叠,大家可能会看不清楚究竟哪个是坏导,所以笔者建议大家在MATLAB界面上查看,MATLAB页面上会在坏导后显示“#Bad#”。
温馨提示:如果检测出了TP9和TP10是坏导可以不用管,这两个是参考电极,可以不进行处理。


接下来有两种方法对坏导进行处理:
方法1:直接删除坏导(不建议)
方法2:插值坏导
笔者建议使用插值坏导的方法。选择Tools → Interpolate electrodes → Select from data channels → 选择需要插值坏导的电极


弹出以下界面时,选择需要进行插值的导联(由于笔者之前进行坏导检测时,检测出来的坏导是Oz,所以笔者这里选择了Oz)。

选择完“OK”后,我们会发现“What channel(s) do you want to interpolate”一栏中出现了需要插值的导联Oz。
确认无误后,选择“OK”。

弹出以下界面,默认选择“OK”即可。

6.重参考
脑电采集得到的数值,本质其实是头皮电极与参考电极之间的电位差。在线参考一般是鼻尖参考、Cz 头顶中央参考、单侧乳突参考等。由于原始采集的参考方式会带来系统偏差,即电位大小差异不是认知活动导致,而是参考位置不同造成的, 因此我们需要进行重参考, 消除记录方式带来的误差。
一般常用的重参考方式有以下两种:
(1)双侧乳突平均参考:取左右两个乳突通道(TP9,TP10)的平均值作为新参考
(2)全脑平均参考:以全部头皮脑电通道的均值作为参考
【注意:做全脑平均参考时不应纳入眼电通道,因为眼电信号往往波动大,会严重干扰参考基准】

弹出重参考界面后,在Re-reference data to channel(s)一栏前打钩,然后点击“…”按钮,选择TP9和TP10

弹出以下界面后,点击”OK”即可。

这时Reference一栏会显示TP9和TP10,表示重参考设置成功。

7.去除无用电极
这一步的目的在于剔除实验采集到但后续脑电分析用不到的通道,减少无关信号干扰,简化数据、提高数据处理速度和后续分析准确性。
一般通常会删除以下通道:
(1)眼电:VEOG(垂直)、HEOG(水平)
(2)参考:M1、M2
(3)地极:GND、REF
(4)空通道/ 坏导:没信号、全 0、噪声极大的通道
这一步骤可以直接删除包含伪迹的EEG信号片段,虽然简单直接,但会丢弃大量有用的信号,并不利于信号数据比较少的脑电实验。
具体步骤为: Edit → Select data



注意:选择上的电极表示需要保留!
点击“OK”确定后,会发现页面中“Channel range”一栏出现了所选择的电极信息。确认没有遗漏电极后,点击“OK”。

弹出以下页面时,选择“OK”。

同样, 笔者也给大家演示一下删除电极的步骤:
点击“…”按钮,弹出选择界面。假设这里Oz电极是你想要删除的, 那么选择Oz, 然后记得勾选”remove these”, 表示删除选中的电极。之后的步骤则和前面一样。

8.独立成分分析(ICA)→保存.set文件
由于EEG是混合信号,其不仅包含真实脑电信息,还包括眼动、眨眼、肌肉活动以及其余噪声的干扰,而独立成分分析的目的就是将混合的脑电与伪迹(眼电、肌电、工频)拆成独立成分,之后剔除眨眼、肌肉紧张等伪迹成分,保留纯净的脑电信号,提取出脑电波中具有一定心里含义的成分。
具体步骤为:选择Tools → Run ICA

接着会弹出以下界面:

由于ICA默认是在所有通道都是有效数据的情况下进行的,而之前我们有一个坏导的数据是用其他通道的数据生成的,这就相当于我们损失了一个有效通道数据,所以此处我们需要进行一些修改:在'extended', 1后面加上'pca', 61,注意这里一定要使用英文输入法。
【补充:这里的61是由64(总导联数)-2(不分析TP9和TP10)-1(坏导数)得来的】

接下来会弹出以下页面,表示正在跑ICA,这个时候不用点击任何按钮,等待MATLAB跑完即可.


跑完ICA后,eeglab界面上, ICA weights一栏显示为Yes, 表示独立成分分析成功。

注意: 跑完ICA后一定要记得保存.set文件, 因为跑ICA很花时间, 现在保存好,之后如果有其他步骤出错或出现其他问题, 就可以直接打开跑完ICA的.set文件, 而不至于再跑一遍浪费时间。
保存的步骤是: File → Save current dataset as → 选择文件夹

9.剔除伪迹
选择Tools → ICLlabel

接下来弹出的页面一律选择”OK”。



接下来, 会弹出以下界面:

在这一界面上, 我们无法直接去除伪迹,需要打开另一界面,其操作步骤为:选择Tools → Reject data using ICA → Reject components by map

弹出以下界面,选择“OK”即可。

随后,会弹出以下界面:

此时我们可以对显示出的所有ICA成分进行查看和伪迹标记,我们只需点击成分数字,就可以看到该成分的详细情况。由于笔者这个被试里没有非常标准的伪迹图,所以仅做剔除伪迹的步骤演示,大家实际去进行伪迹剔除时主要还是依据个人经验。这里假设我们要剔除34。那么步骤如下:点击34号成分 → 点击下方绿色的ACCEPT,单击之后会变成红色的REJECT,即表示标记伪迹成功→ 点击“OK”。


标记成功后,选择“OK”。

随后进行伪迹的剔除,步骤为:选择Tools → Remove components

弹出以下界面,确认“Component(s) to remove from data”一栏中为我们选择剔除的成分(即34),确认无误后选择“OK”→ 选择“Accept”→ 选择“OK”。



完成后,进行保存。
在最后,补充一下标准的伪迹样式:



后续的数据分析(包括创建事件清单,编写bin文件,为事件分配bin信息,分段与基线校正,去除极值,单被试叠加平均,绘制波形图与地形图等)与论文撰写(包括处理步骤怎么写,如何进行spss数据分析和结果解读等)部分在之后的推文中会详细说明,敬请期待哦~
如果觉得有帮助的话,可以给个关注或点个赞呀,谢谢你的支持与鼓励!也欢迎你留言和我一起讨论学习!
夜雨聆风