Letswave 教程:脑电数据预处理与叠加平均
Letswave 教程:脑电数据预处理与叠加平均
- 1 实验与工具介绍
- 2 前期准备
- 2.1 letswave7安装与数据集准备
- 2.2 数据集导入
- 2.3 数据集检查
- 3 数据预处理
- 3.1 通道位置赋值
- 3.2 删除无用的通道
- 3.3 滤波
- 3.4 坏电极插值替换
- 3.5 ICA分解以删除成分
- 3.5.1 计算ICA矩阵
- 3.5.2 人工识别成分
- 3.6分段
- 3.7 伪迹去除
- 3.7.1 手动剔除带有伪迹的Epoch。
- 3.7.2 第二种方法是参照标准来剔除伪迹。
- 3.8 重参考
- 3.9 基线校正
- 3.10 平均
- 3.11 查看结果
Hello,
这里是行上行下,我是喵君姐姐~
之前写过eeglab数据处理,得到了大家的一致好评。拖了很久的时频更新,马上就要和大家见面了。
考虑到有的小伙伴没有编辑基础,所以我们先介绍一个界面的软件——letswave7。它和eeglab类似,只是它全部的处理都是界面化的,对于小白来说,十分友好。
今天就以oddball实验为例,简单介绍一下使用letswave7进行脑电数据预处理与叠加平均。然后第二期,再讲时频处理的原理和具体操作哟~
1 实验与工具介绍
实验介绍: 采用视觉Odd-ball实验。在屏幕上,黑色为偏差刺激(标记为“ S 9”),白色为标准刺激(标记为“ S 10”)。每个矩形块持续80毫秒,ISI持续200毫秒。两分钟内总共安排了600次刺激试验,其中偏差刺激的可能性为5%。要求参与者计算黑色矩形块的数量,并在试次结束后报告,以使参与者在屏幕上保持注意力。
工具介绍: Letswave7是在Windows,Mac OSX和Linux或Unix平台下基于Matlab进行EEG信号处理的工具箱。在使用Letswave7之前,应下载并安装 Matlab 。
(详情请点击:Matlab软件包及安装)
在本教程中,将使用Letswave7对P300实验进行研究,以展示对单个主题和多个主题的数据分析过程,并且还将介绍在Letswave7中进行功能图形生成和脚本编写的过程。
2 前期准备
2.1 letswave7安装与数据集准备
首先,打开matlab,点击“设置路径”。
其次,点击“添加并包含子文件夹”,将“letswave7”工具包导入进来,并保存所有文件。
关于本实验的数据集可在微信公众号行上行下后台回复“letswave”获取。
最后,解压本地“rawdata1.zip”文件,其中包括三个文件:sub093.eeg,sub093.vhdr和sub093.vmrk。
2.2 数据集导入
首先,在Matlab的命令窗口中输入“ letswave7 ”以打开Letswave7。将letwave7的路径设置为数据集的文件夹,例如此处的“F:\letswave7\rawdata1”。
其次,在管理器模块的菜单中选择 “File”->“Import”->“Import EEG / MEG datafiles”,弹出导入数据对话框,添加文件 “sub093.eeg”。
最后, 点击绿色按钮以导入数据集。导入完成后,相应的数据集变为红色并显示“sub093(Done)”。关闭导入数据对话框,数据集“ sub093 ”将出现在管理器模块中。
2.3 数据集检查
首先,选择数据集 “sub093”,然后在菜单中单击 “View”->“continues Date Viewer” 以检查导入的数据集的数据质量。
在数据查看器中,可以看到通道P1明显异常。因此,在接下来的步骤中,我们将通道P1视为坏电极,需要对其进行插值。
3 数据预处理
由于原始脑电信号存在极大的噪声,它们在EEG信号中始终混合在一起。因此预处理对于提高信噪比,从而获得“清晰” EEG数据非常必要。
通常,预处理中常用的降噪方法如下:
3.1 通道位置赋值
首先,在管理器模块的数据列表中选择数据集 “ sub093 ”,然后在菜单中单击 “Edit”->“Electrodes”->“Edit electrode coordinates”。
在处理模块中,显示默认分配的位置文件是“ Standard-10-20-Cap81.locs”。
然后,点击 “ Select custom files with channel locations” 以选择频道位置的自定义文件。在Letswave7中的 “Electrodes” 文件夹中,有多个通道位置文件用于不同的EEG记录系统。
PS: 如果不希望使用所有这些文件,还可以分配自己的频道位置文件。
最后,点击 “Run”,名称为 “ chanlocs sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.2 删除无用的通道
有时,为了进行有效的分析并节省存储空间,我们需要删除无用的通道。在这里,IO记录了眼电信号(EOG)。而我们并不需要对EOG进行分析,因此需要删除通道IO。
首先,在管理器模块的数据列表中选择数据集 “ sub093 ”,然后单击 “ Edit”->“Arrange signals”->“Rearrange or delete epochs,channels,indexes”。
然后,在处理模块中,点击**”Add All”**将所有通道添加到右侧列表框。
然后,选择通道 “IO”,点击 “ Remove” 进行移除。
最后,点击 “Run ” 按钮,名称为 “ sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.3 滤波
滤波可以滤除高频伪迹,低频漂移和50 / 60Hz电源线干扰。在letswave7中,采用Butterworth滤波器进行频率滤波。
对于P300数据集,由于300ms左右的正波是慢波,因此我们将带通滤波器设为0.05-30Hz。对于50Hz电源线干扰,将不使用陷波滤波器,因为它已经超出了带通滤波器的范围。
PS: 这个数值只是一个参考数值,具体情况具体分析,最好自己领域的相关文献哟~
首先,在管理器模块的数据列表中选择数据集 “ sel_chan sub093 ”,点击击 ”process”- >”Frequency analysis and filters”->”Butterworth filters”。
其次,在处理模块中,将低截止频率(Hz)设置为0.05Hz,然后单击 ”Run” 按钮以进行带通滤波。
名称为 “ butt sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.4 坏电极插值替换
当我们检查导入的原始数据时,发现通道P1是坏的。在此步骤中,我们将通道P1进行插值。
首先, 在管理器模块的数据列表中选择数据集 “ butt sel_chan sub093 ” ,然后在菜单中单击 “ Edit”->“Electrodes”->“Interpolate channel using neighbouring electrodes ” 。
其次, 在处理模块中,在 “ Channel to Interpolate:Channels for” 列表框中选择通道P1,然后单击 “ Find closest electrodes ” 按钮。
由于默认设置中用于插值的通道数为 3,因此Letswave7将根据通道的位置自动找到最接近的电极 “ P3 ”, “ Pz ” 和 “ CP1 ” 进行插值。
PS: 也可以采用4个电极点,根据自己的实验进行设置哈。
最后,点击 ”Run”。名称为 “ chan_interp butt sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.5 ICA分解以删除成分
ICA是一种基于矩阵算法的盲源信号分离方法。假设X代表基于 “通道X时间” 的EEG信号,S代表基于 “成分X时间” 的信号源,A代表基于 “通道X成分” 的混合矩阵。ICA的目的是计算出A矩阵以分离出每个成分。根据这个模型,我们使用ICA在EEG信号中进行人工移除。
3.5.1 计算ICA矩阵
首先,在管理器模块的数据列表中选择数据集 “ chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “ Process”->“Spatial filters(ICA / PCA)->Compute ICA matrix ”。
其次,在处理模块中,成分数量选择 “decide by user”,并将 “Components Number” 设置为 “40”。
PS: 数值也是可以自己进行设置的,一般要小于通道数目,但是数值也不要太小。若是64通道,常用30-64之间。
最后,单击 “Run ” 。名称为 “ ica chan_interp butt sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.5.2 人工识别成分
在获得ICA矩阵,混合矩阵A和分离矩阵pinv(A)之后,我们需要人工识别成分。
首先,在管理器模块的数据列表中选择数据集“ ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “ Process”->“Spatial filters(ICA / PCA)”->“Apply ICA / PCA Spatial filters ”。我们将看到手动删除空间过滤器成分的界面。
其次,在此界面中,黑色代表原始信号X,蓝色代表源信号S,橙色曲线代表滤波后的信号X_bar。我们将成分1识别为眨眼伪迹。成分2识别为水平眼球运动伪迹。在右侧面板中选择橙色comp 1,comp 2。单击 “OK” 对其进行移除。
最后,名称为“ sp_filter ica chan _interp butt sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。
3.6分段
在处理数据时需要对获取的EEG信号进行分段,以分析不同时期的数据。
首先,在管理器模块的数据列表中选择数据集 “ sp_filter ica chan_interp butt sel_chan sub093 ” ,然后在菜单中单击 “Process”- >“Epoch Segmentation”->“Segment relative to events(one file per code)” 。
其次, 在处理模块中,选择事件代码 “S9” 和 “S10”,并将Epoch开始时间和持续时间设置为 “-1” 和 “3” 。
PS: 时间段的选择也可以自己选择而定,因为后期我们会做时频分析,所以选取的时间比较长。若是只做ERP分析,也可以使用 -0.2 到 1。
最后, 单击处理模块底部的 “Run ” 按钮,然后两个新数据集名称为 “ ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ” 和 “ ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”模块。
3.7 伪迹去除
在消除伪迹之前,有必要对所有时期进行观察。
首先,选择数据集 “ ep_S9 sp_filter ica chan_interp butt sel_chan sub093 ” 和 “ ep_S10 sp_filter ica chan_interp butt sel_chan sub093 ” ,然后在右键菜单中选择 “View” 。
其次, 在波形画面查看器中,选择所有Epoch,将Epoch设置为叠加波。我们在这里对 Pz进行观察,因为它是P300分析中最有效的电极点。将y轴设置为从 -100 到100。在通道Pz上,对于这两个数据集,所有Epoch均未观察到明显的伪迹。
虽然这里没有观察到伪迹,但其它实验数据可能会存在伪迹。剔除伪迹有两种方法:
3.7.1 手动剔除带有伪迹的Epoch。
首先,选择数据集 “ ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ” 和 “ ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后单击 “ Edit” ->“Arrange signals”->“Rearrange or delete epochs,channels,indexes”。
其次,在处理模块中,将选择项设置为 “ Epoch ”,然后将要保留的Epoch放在右栏中。单击 “Run ” 以完成成分剔除。
最后,两个名为 “ sel_epoch ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ” 和 “sel_epoch ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ” 将出现在管理器模块的数据列表中。
3.7.2 第二种方法是参照标准来剔除伪迹。
首先,选择数据集“ ep_S9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ ep_S10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “Process”- > “ Artefact rejection and suppression”->“Reject epoch (amplitude criterion)”。
其次,在处理模块中,选中 “Select channels”,然后选择通道Pz。在右侧选中 “X-axis limits”,并将相应的间隔设置为0至2s。单击处理模块底部的“Run ”按钮以完成成分剔除。
最后,名称为“ ar-amp ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ ar-amp ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”的两个新数据集将出现在管理器模块的数据列表中。
3.8 重参考
在P300的研究中,通常选择双侧乳突区域的平均值作为参考。因此,我们将重新参考TP9和TP10的平均值。
PS:不同的型号有不同的说法,也有的叫A1和A2。此外,也可以采用其他参考方法,例如,零参考,全脑平均等。(详情可点击:EEG信号处理与分析常用工具包介绍)
首先,选择数据集“ ep_S9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ ep_S10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “Process”- >“Rereference signals”->“Rereference ”。
其次,处理模块中,在左侧列表框里选择TP9和TP10作为新参考,并在右侧列表框中选择“Apply reference for”。点击 “Run” 按钮在处理模块的底部完成成分剔除。
最后,名称为“ reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”的两个新数据集将出现在管理器模块的数据列表中。
3.9 基线校正
在分段中,我们将Epoch的开始时间和持续时间设置为 -1 和 3,这意味着Epoch将从 -1s 持续到 2s 。因此,我们将基线设置为从 -1s 到 0s,以进行基线校正。
首先,选择数据集“ reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “Process”- >“Baseline”->“Baseline correction”。
其次,将默认设置保留在处理模块中,然后单击处理模块底部的 “Run” 以完成成分剔除。
最后,名称为“ bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”的两个新数据集将出现在管理器模块的数据列表中。
3.10 平均
在预处理的十个步骤之后,我们可以简单地对各个时期进行平均以进行ERP的分析。
首先,选择数据集“ bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击 “Process”- > “ Arrange ”- >“Compute arrange,std,median across epoch”。
其次,将默认设置保留在处理模块中,然后单击处理模块底部的 “Run” 按钮进行平均。
最后,名称为“ avg bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ avg bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”的两个新数据集将出现在管理器模块的数据列表中。
3.11 查看结果
首先,选择数据集“ avg bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ avg bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”。单击右键菜单中的“View”,我们可以在多视图器中查看波形的结果。
然后,选择两个数据集并选择通道 Pz,我们可以在Pz上看到P300的结果。在工具栏中选中“cursor”并将设置为0.35,我们可以观察到P300的波形。由于这是单个主题的结果,因此ERP仍然很嘈杂。
总结:在这一部分中,我们逐步演示了预处理和ERP的分析。对于每个步骤,文件名中都会添加一个前缀,例如butt,ica和reref。
因此,根据数据集的名称,我们对处理步骤有了大致的了解,有关画图以及处理脚本等更高级的教程将在后面进行介绍,敬请期待哟~
本文首发于微信公众号行上行下,公众号后台回复“letswave”获取。
Letswave 教程:脑电数据预处理与叠加平均相关推荐
- letswave7中文教程3:脑电数据预处理-ICA去除伪影
目录 ICA/BSS的理论与模型 第5步:计算ICA矩阵 第6步:识别伪影成分 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 ICA/BSS的理论与模型 ...
- letswave7中文教程2:脑电数据预处理-通道位置分配
目录 第1步:通道位置分配 第2步:删除不良通道 第3步:滤波处理 第4步:坏电极插值 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 原始的脑电图信号是有 ...
- 脑电数据预处理-ICA去除伪影
ICA/BSS的理论与模型 独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法.ICA可线性建模如下图所示. 假设X为" ...
- EEGLAB脑电数据预处理指导手册
EEGLAB脑电数据预处理指导手册 1 前期准备工作 1.1 书籍 1.2 网站 1.3 公众号 2 预处理流程 2.1 准备工作 2.2 眼电去除的标准 2.3 后续整理工作 3 叨叨几句 Hell ...
- 手把手教你EEG脑电数据预处理-操作篇
目录 导入数据 对数据进行初步认识 电极定位 移除无用电极 重参考 重采样 滤波 分段和基线校正 插值坏导 ICA 剔除ICA成分 剔除坏段 目视检查法 保存数据 本分享为脑机学习者Rose整理发表于 ...
- eeglab脑电数据预处理:step by step
文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注. 学脑电的小伙伴对 matlab 软件和 eeglab 插件一定不会陌生,它们是脑电数据分析过程中的重要法宝.在对脑电数据进行分析处理之前需 ...
- 手把手教你EEG脑电数据预处理-原理篇
目录 0. EEG data 1. 定位通道数据 2. 删除无用数据 3.滤波 4.分段 5.基线校正 6. 重参考 7. 降低采样率 8. 插值坏导 9. 独立主成分分析 10. 剔除坏段 本分享为 ...
- 脑电数据预处理看这篇就够了
01 脑电数据分析预处理步骤 1.(Import data)导入数据 2.(Channel locations)电极定位 3.(Select data)剔除无用电极 4.(filter the dat ...
- EEG脑电数据预处理
预处理 电极放置:在10-20的基础上,在10%的位置上进行电极扩展 去除伪迹:生理伪迹-眼电伪迹,肌电伪迹,心电伪迹,其他 非生理伪迹-工频干扰,电极伪迹,数据伪迹等 肌电伪迹:使用平均叠加来消除一 ...
最新文章
- C#调用控制面板选项
- Tomcat介绍及性能优化
- 第四讲 deque
- Polygon 年度游戏之《巴巴是你》:解读纯粹的游戏乐趣
- File System Auditor 安装全程截图
- matlab 归一化_机器学习中如何用Fscore进行特征选择(附Matlab代码)
- C#的多线程机制探索1
- 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
- 一个OA解决方案的经典模板
- 电子计算机的基本结构基于存储程序思想是由,计算机应用基础第一章复习题
- Xamarin开发Android时Visual Studio 2012没有智能提示解决办法
- 搜索摄像头/录像机IP地址工具是什么
- Hyper-v 虚拟机固定Ip、连接外网
- mysql怎么创建外表_PostgreSQL使用MySQL外表的步骤详解(mysql_fdw)
- wps office 办公软件下载
- 编译、汇编、翻译原理知识概括
- 基本排序算法 【转载】
- C语言文件——从创建到删除
- ubuntu下安装电驴
- 【点击链接,自动下载安装APP,小米公司的坑】在浏览器中, 我们以为回退就能解决误点击。其实是不管用的。