关注“心仪脑”查看更多脑科学知识的分

关键词:太空,脑电实验,文献解读

很多小伙伴在做完脑电实验之后,对如何进行数据处理很是发愁。预处理的步骤还好说,在EEGLAB里面“点点点”就能完成,但是后续的叠加平均等步骤在EEGLAB里面需要通过脚本来实现,得花费大量的时间去学习。本教程将介绍一种ERPs数据分析的方法,该方法无需代码,适用于数据量较小的情况,着急处理数据但来不及学习Matlab脚本编写的小伙伴们也可以参考(本教程基于Windows 11系统,Matlab2020a,EEGLAB v2021.1)。

01导入原始数据(Import data)

File---Import data---Using EEGLAB functions and plugins

选择采集数据时对应的厂商以及数据导出时的格式。如果在Using EEGLAB functions plugins里面没有找到对应的数据格式或者厂商,可以在红色框框圈出来的位置(Manage EEGLAB extensions)里面找一下对应的扩展包(比如这里我们以ANT的设备为例,就要选择ANTeepimport v1.13这个扩展包)。

有时候我们会碰到数据导入失败的情况,这时候可以:

①先检查一下自己的数据存储路径里面有没有中文字符,如果有的话就会报错;

小贴士: 无论是数据命名还是数据的存储路径,都不要出现中文,防止一些无法识别或者无法兼容的问题出现,避免不了的话可以用拼音来代替

②如果检查过路径中不存在中文字符且数据命名也不是中文的话,可以查看一下EEGLAB里面的数据导入扩展包有没有更新到最新版本,如果没有的话同样可以在Manage EEGLAB extensions里面进行更新。

导入成功后可以在EEGLAB的这个GUI界面看到所导入数据的一些基本信息,这里简单介绍一下每一行所代表的含义:

Filename这里显示none,说明导入原始.cnt格式的数据后还没有进行保存,EEGLAB里面进行处理后存储的数据均为.set格式;

Channels per frame代表着采集时所用电极帽的通道数量,这里为32导;

Frames per epoch代表每一个分段的采样点个数,因为此时还没有分段,所以这里显示的采样点总个数,由采样率与采样时间相乘所得;

Epochs表示分段数;

Events表示打上的Mark总数;

Sampling rate(Hz)表示采样率;

Epoch start(sec)和Epoch end(sec)表示分段的开始时间与结束时间;

Reference表示重参考所选择的电极点,这里显示unknown,表示还没有进行重参考;

Channel locations表示电极定位,目的在于让EEGLAB知道每一个通道对应的位置;

ICA weights表示ICA权重,EEGLAB主要采用独立成分分析的算法校正眼电伪迹;

Dataset size(Mb)表示数据集大小。

02电极定位(channel locations)

Edit---Channel locations

在做电极定位这一步之前,可以看到电极点的坐标都显示为0,而且画出的2-D图里面所有的电极点都集中在中心的位置,说明电极还没有定位完成。所以需要点击Look up locs查找电极坐标。

这里我们选择的是标准10-5的电极坐标定位,点击OK之后可以发现,每一个通道的坐标数值都显示了出来,而且不同的通道位置也与头模对应上了。这样,电极定位这一步就完成了。

03删除无用通道

Edit---Select data

在Channel range这一行选择后续数据分析中不需要的通道,注意一定要勾选上on-> remove these的小方框小贴士:如果接下来的重参考采用全脑平均的方式,这里可以选择删除掉双侧乳突M1、M2两个通道;如果后续重参考要以双侧乳突为参考,在这里要保留这两个通道。

04重参考

Tools---Re-reference the data

在采集过程中,ANT设备所设置的在线参考点为CPz。我们都知道,脑电记录的都是相对电压值,所以说参考点的电压值越接近于零电势,所采集到的每一个通道的脑电信号就越接近真实电压值。

CPz电极点明显距离零电势很远,由于大脑中容积传导效应的存在,导致在采集过程中邻近CPz的电极点变化很小,因此需要进行重参考这一步,重新选择一个接近于零电势的电极点作为参考点。

做完重参考之后可以看到,Channels per frame变成了30,而Reference的地方变成了M1、M2,接下来具体看一下脑电信号的变化。

(重参考前)

(重参考后)

比较明显的是重参考之前CP1、CP2以及Pz电极点由于距离在线参考点CPz很近,脑电信号变化很小,接近于一条直线;做完重参考之后,可以看到这些电极点的电压值有了明显的变化,而且所有通道都有相似的变化趋势。

05滤波

Tools---Filter the data---Basic FIR filter(new,default)

滤波这一过程是将所选频段范围之外的频率进行衰减,以达到去除脑电信号之外伪迹干扰的目的。具体所选的频段可以参考以往同领域的研究。

(滤波后)

将滤波后的脑电信号与重参考后的脑电信号进行对比,明显的变化就是波形图的高频“毛刺”减少,信号更加平滑了。

06分段

分段这里采用ERPLAB小插件创建了一个事件列表,后续依据这个事件列表进行分段处理。

值得注意的是,EEGLAB原始工具包中是不含有ERPLAB这个小插件的,同理可以在manage EEGLAB extensions里面找到这个小插件,直接下载就可以了。

Step1:创建事件列表(eventlist)

这里点击Advanced进入到创建的界面,Event Code的地方填上实验设置的Mark数,Bin number的地方按照1,2,3的数字顺序依次往下排列,填好之后点击Update Line就设置好一个Bin。

Step2:依据Bin分段

点击Extract bin-based epochs按照刚刚设置的Bin进行分段,随后跳出来的弹窗可以选择分段的时间窗。一般来说大部分ERP实验所选的时间窗为-200至800毫秒。

分段之后最开始的界面出现了些许的变化:Epochs的地方变成了分段的数量,Epoch start与Epoch end变成了分段的开始与结束的时间,即-0.2至0.8秒。这里之所以显示0.798,是因为采样率为500Hz(即1秒钟有500个采样点),那么每一个采样点的时间就是0.002秒,因此到最后一个采样点的时间刚好是0.798秒。这时我们发现数据量(Dataset size)小了很多,这是因为分段之后只保留了含有Mark的数据段。

07Run ICA

Tools---Decompose data by ICA

跑ICA会花费一些时间,这个过程就让电脑自己运行就好,运行速度取决于电脑的配置以及数据量的大小。

跑完ICA之后在Classify components using ICLabel中找到Label components,对独立成分进行提取。

这里出现的30个头图就是通过独立成分分析(ICA)分解出来的30个独立成分。EEGLAB会通过一些内置的算法对ICA分解出来的独立成分进行分类,比如分解出来的独立成分1属于眼电的可能性为97.1%。因为这一步的目的主要是校正眼电伪迹,因此选出来的大概率为眼电成分,基于自己以往的判断经验进行去除就可以。

判断好眼电伪迹的成分(这个例子中为1和11)之后,通过Remove components from data去除这两个成分,对眼电伪迹进行校正。

点击OK之后,在弹出的Confirmation窗口选择Plot single trial,可以看到去除成分之前与之后的信号对比。红色的是去除成分之后的信号,可以看到比较明显的向上突出的眨眼伪迹基本被校正过来了。这说明我们选对了成分,点击Accept就可以进行保存。

08叠加平均

ERPLAB---Compute averaged ERPs

Compute averaged ERPs直接保持默认点击RUN运行就可以了,计算完之后在ERPsets里面多出来一个ERP的数据集,而且Plot ERP的选项不再是灰色的了,表示可以基于这个数据集进行接下来的画图操作。

点击PLOT之后就画出了所有通道的ERP波形图,这个例子中偏差刺激所诱发出的P300波形还是比较显著的。

接下来在ERPLAB中找到ERP Measurement Tool可以提取具体的ERP数据,用于后续的统计分析。

总结

这里仅总结了EEGLAB的部分功能,在实际数据处理过程中还可能会遇到各种各样的问题。另外,当我们的数据量较大时,这样一步一步点还是比较麻烦的,所以说有机会一定要掌握一些简单的语句和代码,至少看到别人的代码知道如何去更改以供自己使用。

祝大家实验进展顺利,该显著的结果都显著。

全文完结,整理不易,看不完记得收藏,最后希望点赞支持一下!

了解更多,请关注“心仪脑”公众号!

无需代码,图文并茂详解EEGLAB中的ERPs数据分析方法相关推荐

  1. mysql_slow_详解MySQL中SlowLog的配置方法(图文)

    mysql 日志系统上线有段时间了,前端在慢慢切站点过来写入,未雨绸缪 diy了套 mysql 监控工具. 分为 slave  status ,sync,objec infot,userprivile ...

  2. php后端switch,详解PHP中php switch的方法实例_后端开发

    php+javascript实现用户注册模块(附源码)_后端开发 在任何一个网站内都需要注册功能,本文讲述了利用html . javascript . ajax . php和MySQL实现简单的注册功 ...

  3. 详解Java中的Object.getClass()方法

    详解Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Me ...

  4. java中的invoke方法_详解Java中Method的Invoke方法

    在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...

  5. 一文详解科研中的Paper阅读方法!!!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 前言 论文阅读一直是科研过程中至关重要的一环,如何收集论文,快速选取和课题匹配的论 ...

  6. 6个实例,8段代码,详解Python中的for循环

    作者:奥斯瓦尔德·坎佩萨托(Oswald Campesato) 来源:大数据DT(ID:hzdashuju) Python 支持for循环,它的语法与其他语言(如JavaScript 或Java)稍有 ...

  7. 用6个实例,8段代码,详解Python中的for循环

    目录 前言 01 使用tryexcept的for循环 02 指数运算 03 嵌套的循环 04 在for循环中使用split()函数 1. 使用split()函数做单词比较 2. 使用split()函数 ...

  8. 实例六个,八段代码,详解Python中的for循环

    Python 支持循环,它的语法与其他语言(如 JavaScript 或 Java)有些不同.下面的代码块演示如何在 Python 中使用for循环来遍历列表中的元素: 下面的这段代码可以通过行替换的 ...

  9. 图文并茂~ 详解交换机中的半双工与全双工网络知识

    很多学习网络知识的朋友在配置交换机时,时常会看到半双工与全双工的功能,今天带大家一起来了解下什么是半双工与全双工. 早期的网络设备HUB(集线器)就是半双工,目前基本没有人用了,而现在用的SWITCH ...

  10. 【C语言】一不小心写出bug?凡人教你如何写出好代码【详解vs中调试技巧】

最新文章

  1. 题目1156:谁是你的潜在朋友
  2. phpstorm8 license key
  3. java对象锁与类锁区别
  4. vue 工程修改浏览器title以及icon
  5. java定时器的使用(Timer)
  6. Python操作读写txt文件
  7. 零基础iOS之Json及XML数据解析2
  8. 一加9 Pro真机图曝光:哈苏相机联名logo助力影像旗舰
  9. UVa 706 ZOJ 1146 LC-Display
  10. 【图像增强】基于matlab GUI暗通道+Retinex图像去雾(带面板)【含Matlab源码 732期】
  11. 量子计算机与仿生论文,有关量子力学的论文
  12. React生命周期钩子函数
  13. css3动画2D|3D
  14. python简单制作节日贺卡
  15. Eatting外卖基于瑞吉外卖代码全功能优化含源码
  16. 用户运营:如何用B端运营思维做用户增长?
  17. IDEA SpringBoot 同一个模块启动多个服务(实例)
  18. 点云配准5 -辅助知识 最小二乘法代码实现拟合曲线(C++)
  19. SanDisk Cruzer CZ50 8GB U盘 质量怎样?不行!
  20. 联想禁止 win10 更新 v2.11 免费版

热门文章

  1. [PCB设计] 3、用CAM350修改GERBER文件(删除某些部分)
  2. java中的常见算法
  3. 【已解决】离散数学项目工序表转换为网络图(完整步骤版)
  4. 充电和库仑计,charge(bq24161) and coulomb(bq27425)
  5. 基于JAVA WEB的网上书店的设计与实现
  6. linux服务器测网速,linux服务器如何测试网速
  7. 转载:Rootkit总结
  8. 为 Elipse 下载windowsBuilder 实现窗口插件
  9. Input Director使用一个键盘和鼠标即可控制多台Windows计算机
  10. ESP32 LVGL8.1 ——Roller 滚动 (Roller 24)