目录
概念
EEGLAB 是一个交互式 Matlab 工具箱,用于处理连续的和事件相关的 EEG、MEG 和其他电生理数据,结合了独立分量分析 (ICA)、时间/频率分析、伪影抑制、事件相关统计以及几种有用的平均可视化模式和单次试验数据
1.安装EEGLAB
-
将 EEGLAB zip 文件解压到您选择的文件夹中
-
启动Matlab
-
将Matlab路径更改为刚刚解压的EEGLAB文件夹
-
输入“eeglab”并在 Matlab 提示符下按 Enter 键文件实例演示
2.文件实例演示
导入数据集处理
(1)导入数据集
这里使用的是eeglab下载的安装包自带的数据集
这里的数据为.set格式,如果不是,import data导入matlab.array转化为.set格式后再Loading existing dataset
输入eeglab之后有界面弹出来,点击file->
选择教程文件“eeglab_data.set”,该文件随工具箱一起分发,位于 EEGLAB 的“sample_data”文件夹中。然后按打开。
(2)画图
plot->channal data(scroll)
(3) 修改并存储数据集
先进行简单的滤波操作
tool->filter the data
输入1作为下沿频率(以Hz为单位)(第一个编辑框),然后按确定
修改数据集后,EEGLAB 会询问用户如何处理修改后的数据集,如下所示。默认设置是将新数据集存储在内存中,同时保留第一个数据集。用户还可以通过单击下面相应的复选框来决定覆盖内存中的原始数据集。
存储新数据集(而不是覆盖它)后,您可以使用 EEGLAB 菜单项“数据集”在内存中可用的数据集之间进行可视化和导航,如下所示。可以在此菜单中选择任何数据集
(4) 保存数据集
将新数据集存储在 MATLAB 内存中不会自动将其永久存储在磁盘上
file->save current dataset as
保存新数据文件时,会出现文件浏览器窗口。输入数据集的名称(应以文件扩展名.set结尾),然后按“保存”(如下)将保存数据集
(5) 删除数据集
要从 MATLAB 内存中删除新创建的第二个数据集,请选择“文件”→“清除数据集”或“编辑”→“删除数据集”,然后输入数据集索引“2”,如下所示,然后按“确定”。
要删除数据集文件,只需从 MATLAB 外部的磁盘中删除该文件即可。
(6) 文件首选项
调用菜单项File → Preferences。数据集和文件首选项是下面显示的前三项。
第一个选项确定内存中是否可以存储多个数据集。我们在执行组分析时将选择此选项,因为通常不可能将所有数据集保存在内存中。选择此选项时,缺点是用户必须保存或覆盖父级,如下所示(必须选中下部的复选框之一)。
默认情况下,EEGLAB 将为每个数据集保存两个文件。一个包含元数据的文件(扩展名为 .set,是一种 MATLAB 文件),另一个文件包含原始数据(扩展名为 .fdt 的 float32)。第二个选项可以保存单个文件
导入事件处理
(1)从数据通道导入事件
有关实验事件的信息通常记录在脑电图数据矩阵的某一行(通道)上
创建模拟数据来说明如何从数据通道导入事件
假设 EEG 数据集有 33 行(通道),其中前 32 行是数据通道,最后 (33) 是事件通道,值为 1(刺激开始)、2(受试者响应)和 0(其他) 。用于生成此类数据的 MATLAB 代码如下(用于测试、复制代码并将其粘贴到 MATLAB 命令行):
eegdata = rand(32, 256*100); % 32 channels of random activity (100 s sampled at 256 Hz).
eegdata(33,[10:256:256*100]) = 1; % simulating a stimulus onset every second
%从10到256*100的点,每隔256个点有一个打标线,均匀打标
eegdata(33,[100:256:256*100]+round(rand*128)) = 2;
%从100到256*100的点,每隔(256+一个随机数)个点有一个打标点,非均匀打标
将上述代码复制到 MATLAB 并使用File → Import data → from ASCII/float file or MATLAB array菜单项将数组eegdata作为测试数据集导入 EEGLAB后,选择File → Import event info → from data channel菜单项来调用函数pop_chanevent.m
输入33作为事件通道,并将边缘提取类型设置为向上(前导)(注意:将鼠标放在文本Transitions to extract上以查看上下文帮助消息)。按确定。现在,事件信息将已导入到测试 EEGLAB 数据集中。同时,通道33将从测试数据中删除。选择菜单项“edit”→“events value”以检查导入的事件类型和延迟。
PS:
- 事件类型:标识特定的事件或刺激。
- 事件延迟:事件发生的时间点,相对于EEG数据开始的时间位置。
- 出现事件延迟的原因:不同事件在不同时间点发生,需要记录这些时刻以便分析。
(2)从 MATLAB 数组或文本文件导入事件
使用上面创建的随机 EEG 数据集,我们导入存储在 ASCII 文本文件tutorial_eventtable.txt中的事件信息。该文本文件由三列组成,第一列包含事件的延迟(以秒为单位),第二列包含事件的类型,第三列包含描述事件的参数(例如,刺激位置)
选择菜单项 file —>events value --> MATLAB 数组或 ASCII 文件
关于对齐事件的重要说明
事件延迟与数据事件对齐,它将第一个事件延迟与现有事件延迟对齐并检查延迟一致性。NaN值(MATLAB 表示非数字)表示忽略此选项(如上例所示)。然而,对于大多数脑电图数据,脑电图是通过存储在事件通道中的基本事件来记录的(请参阅上面从数据通道导入事件)。详细的事件信息单独记录在文本文件中:因此,文本文件中记录的事件必须与脑电图中记录的事件一致。
如果文本文件中的第一个事件对应于 EEG 中记录的第一个事件(即,如果两者之间的偏移量为 0),请将“将事件延迟与数据事件对齐”的输入设置为 0。将此值设置为 1 表示事件文本文件中的事件 1 对应于 EEG 数据中的事件号 2。这里,负值也可用于指示文本文件中的事件在脑电图记录的事件之前开始。
PS:文本文件和EEG记录的事件的区别
- EEG数据中的事件:主要是基本的时间和类型标记,直接与EEG数据同步。
- 文本文件中的事件:提供更详细的元数据和描述,独立存储,便于编辑和分享
导入频道位置
1.加载EEGLAB 数据集
2.查找频道位置
命令行通道位置查找示例
chanlocs = struct('labels', { 'cz' 'c3' 'c4' 'pz' 'p3' 'p4' 'fz' 'f3' 'f4'});
pop_chanedit( chanlocs );
从文件加载通道位置
edit->channel locations
Read location选择文件,eeglab_chan32.locs(位于EEGLAB 发行版的sample_data子目录中)。
3、过滤数据
滤波器消除线性趋势
tool->filter the data->basic FIR
请注意,如果同时选择高通和低通截止频率,低通和高通部分将具有相同的斜率。因此,低通斜率常常比必要的更陡。为了避免此问题,我们建议首先应用低通滤波器,然后在第二次调用中应用高通滤波器(反之亦然)。尽量先低通后高通,一次一次操作,尽量不带通
4、重新引用
(1)概念
用于记录脑电图数据的参考电极通常被称为数据的“公共”参考
EEG记录中的典型记录参考是一个乳突(例如,10-20系统中的TP10,下图中红色的电极),链接的乳突(通常是数字链接的乳突,事后计算),顶点电极( Cz),单个或相连的耳垂,或鼻尖。具有有源电极的系统(例如,BIOSEMI Active Two)可以无参考地记录数据。在这种情况下,必须在数据导入期间事后选择参考。如果不这样做,可能会在数据中留下 40 dB 不必要的噪声。
(2)操作
1.加载 EEGLAB 数据集
2.计算平均参考值
tools->re-reference the data
3.更改采样率
tools->change sampling rate
5.拒绝伪影
(1)删除不良通道
1.加载数据集
2.滚动频道数据
Plot->channel data(scroll)
3.查看数据频谱
Plot->channel spectra and maps
4.选择通道数据
edit->select data
(2)删除不好的数据
1.加载数据集
2.滚动频道数据
Plot->channel data(scroll)
3.电压等级
4.调整滚动时间窗口的宽度
Settings → Time range to display,并将所需的窗口长度设置为“10”秒,如下所示,
5.显示频道数
Setting->numbers of channels to display
6.放大数据
Settings → Zoom off/on → Zoom on。使用鼠标在数据区域周围拖动一个矩形以将其放大。
7.拒绝数据
Tools → Inspect/reject data by eyes和Plot → Channel data (scroll)调用函数eegplot.m。根据您选择的菜单项,可能会出现警告消息;单击“继续”。
8.拒绝不良数据部分的策略
拒绝不良数据部分的一种策略是使用eegplot.m窗口(右上角)的Stack按钮堆叠数据并显示大约 30 秒的数据(有关更改时间窗口的大小,请参阅上一节)。这样可以轻松发现并删除伪影,