脑电EEG代码开源分享 【1.前置准备-静息态篇】

慈云数据 8个月前 (03-13) 技术支持 123 0

往期文章

希望了解更多的道友点这里

0. 分享【脑机接口 + 人工智能】的学习之路

1.1 . 脑电EEG代码开源分享 【1.前置准备-静息态篇】

1.2 . 脑电EEG代码开源分享 【1.前置准备-任务态篇】

2.1 . 脑电EEG代码开源分享 【2.预处理-静息态篇】

2.2 . 脑电EEG代码开源分享 【2.预处理-任务态篇】

3.1 . 脑电EEG代码开源分享 【3.可视化分析-静息态篇】

3.2 . 脑电EEG代码开源分享 【3.可视化分析-任务态篇】

4.1 . 脑电EEG代码开源分享 【4.特征提取-时域篇】

4.2 . 脑电EEG代码开源分享 【4.特征提取-频域篇】

4.3 . 脑电EEG代码开源分享 【4.特征提取-时频域篇】

4.4 . 脑电EEG代码开源分享 【4.特征提取-空域篇】

5 . 脑电EEG代码开源分享 【5.特征选择】

6.1 . 脑电EEG代码开源分享 【6.分类模型-机器学习篇】

6.2 . 脑电EEG代码开源分享 【6.分类模型-深度学习篇】

汇总. 专栏:脑电EEG代码开源分享【文档+代码+经验】

0 . 【深度学习】常用网络总结


脑电EEG代码开源分享 【1.前置准备-静息态篇】

  • 往期文章
  • 一、前言
  • 二、前置准备 框架介绍
  • 三、代码格式说明
  • 三、脑电处理 代码
    • 3.0 参数设置
    • 3.1 数据导入
    • 3.2 前置准备-主函数
    • 3.3 前置准备-功能函数
    • 3.4 前置准备-结果保存
    • 四、前置准备 整体代码
    • 总结
    • To:新想法、鬼点子的道友:

      一、前言

      本文档旨在归纳BCI-EEG-matlab的数据处理代码,作为EEG数据处理的总结,方便快速搭建处理框架的Baseline,实现自动化、模块插拔化、快速化。本文非锁时任务(无锁时刺激,如静息态、运动想象)为例,分享脑电EEG的分析处理方法。

      脑电数据分析系列。分为以下6个模块:

      1. 前置准备

      2. 数据预处理

      3. 数据可视化

      4. 特征提取(特征候选集)

      5. 特征选择(量化特征择优)

      6. 分类模型

      本文内容:【1.前置准备】

      提示:以下为各功能代码详细介绍,若节约阅读时间,请下滑至文末的整合代码


      二、前置准备 框架介绍

      前置准备

      前置准备的主要功能,分为以下4部分:

      1. 降采样

      2. 数据分段

      3. 去暂态

      4. 选择导联

      前期准备的代码框图、流程如下所示:

      在这里插入图片描述

      注:前置准备 理论上可以归类到 预处理阶段,本代码将两者分开基于以下考虑:

      1. 前置准备是数据处理的准备阶段,对脑电数据无损处理,不对原始数据进行变换、映射
      2. 为提升中间数据的可读性、可分析性,将原本9步骤的预处理,分为 4步【前置准备】 + 5步【预处理】

      三、代码格式说明

      本文非锁时任务态(下文以静息态代替)范例为:ADHD患者、正常人群在静息状态下的脑模式分类

      • 分段代码名称:代码命名为Standard_cut_rest
      • 输入格式:静息态为Data的结构体,内部为data命名的原始数据(通道*总采样点数)。
      • 参数设置:**采样率\单试次时长\试次标签\试次位置\频域去除暂态时长\降采样(防止数据过大导致运行和内存消耗)
      • 处理形式:**EEG数据汇总为cell(试次被试数),每个cell内为(通道数采样点数)。按照不同分类的类别放入不同cell,cell自身名称如下保存格式名称。例如任务态数据为{100,1}[16*512],其意为16通道数据采集,100试次,单试次为512点数据点。
      • **保存格式:**单独保存个人的名称为Standard_input_target_xx(被试序号),总保存文件名称为Standard_input_target\ nontarget _xx代表被试个数。

        三、脑电处理 代码

        提示:代码环境为 matlab 2018

        3.0 参数设置

        原采样率 fs_raw=500Hz,降低到 fs_down = 250Hz

        一次进行10人次的批处理,subject_num = [1;10]

        每段数据分段长度为2秒,epoch_length = 2

        处理全部导联编号为1-128的电极,perocess_channel = [1 ; 128];

        %% 0.!!!需手动调整参数
        data_path = 'C:\Users\Amax\Desktop\basetest_flod\raw_data_flod\';
        svae_path = 'C:\Users\Amax\Desktop\basetest_flod\save_fold\';
        file_name_target = 'ADHD';
        file_name_nontarget = 'Normal';
        stuct_name =  'Data';
        raw_temp_data = load ([data_path ,file_name_target,'1']);
        raw_temp_data = raw_temp_data.Data.data;
        fs_raw = 500;
        fs_down = 250; %降采样后采样率
        subject_num = [1;10];
        temp_abandon = 20; %去掉的暂态,以秒为单位
        epoch_length = 2;
        perocess_channel = [1 ; 128];
        

        经验建议:

        • 采样率降到300Hz以下,目前主流研究认为,静息态脑电有效频率trial_loop,sub_count} = cut_temp; cut_temp = []; cut_temp = raw_data_nontarget(:, temp_abandon_point+ (trial_loop-1)*fs_down*epoch_length+1 : temp_abandon_point + trial_loop*fs_down*epoch_length); Standard_input_nontarget{trial_loop,sub_count} = cut_temp; end % disp(['输入标准化分段: ' , num2str(sub_loop/subject_num)]); fprintf(repmat('\b',1,print_count)); print_count=fprintf('计算标准化分段进度 : %f',sub_count/(subject_num(2,1) - subject_num(1,1)+1)); sub_count = sub_count+1; end fprintf('\n'); end
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon