使用ICA去除32通道脑电数据中的眼电

% 去除听音乐1的脑电数据眼电

% Method: ICA

% 1.导入数据 32通道 1000hz采样率

% 2. 数据预处理(50hz陷波+0.3hz-250hz带通,可以自己改参数调整)

% 3. ICA(下载的FastICA_25)

% 4. 计算ICA的各ICs分量与原水平、垂直眼电信号相关性

% 5. 将眼电噪声的ICs置零后重建成没有眼电的脑电信号

% 注意代码中设置断点

% copyright:seu-ww

% 2019-05-07

clc;clear all;close all;

MUSIC1PATH=‘D:\Share\music_breath_2018\1-EEG\MUSIC2’;

SAVEPATH1 = ‘D:\Share\music_breath_2018\1-EEG\CLEAN_DATA\MUSIC2’;

data_list = dir(MUSIC1PATH);

eeg_number = length(data_list)-2;

fs = 1000;

for i =3:48 %45名被试的数据

tic;

filename = data_list(i).name;

datapath = [MUSIC1PATH,filename];

num_med = regexp(data_list(i).name,‘D’,‘split’);

subjectID = str2num(cell2mat(num_med(1)));

load(datapath);

data_org = data_music2([1:18,20:23,25:36]?;% M1、M2

%% Preprocessing(Notch + bandpass)

Wo = 50/(fs/2); BW = Wo/35;

[b,a] = iirnotch(Wo,BW);

data_notch= filtfilt(b,a,(double(data_org(:?))’)’;

[b,a] = butter(3,[0.3/(fs/2) 250/(fs/2)],‘bandpass’);

data_bp= filtfilt(b,a,data_notch’)’;%使用零相移数字滤波器(IIR)

L=length(data_bp);t=(0:(L-1))/fs;

%% ICA

level = 32; %ICA分层数,最高设为脑电的通道数

[Zica,A,W] = fastica(data_bp,‘numOfIC’, level);

plot_ICAs(Zica,fs,10);

%% Correlation with VEOG and HEOG

for k=1:(length(Zica(:,1)))

s=corrcoef(data_bp(33,:)’,Zica(k,:)’);

ss1(k) = s(2,1);

s=corrcoef(data_bp(34,:)’,Zica(k,:)’);

ss2(k) = s(2,1);

end

figure;plot(abs(ss1));title(‘各ICs与原水平眼电信号相关性’);

figure;plot(abs(ss2));title(‘各ICs与原垂直眼电信号相关性’);

%% Reconstruction

rec_no = [3,7] %这里输入的是与原垂直眼电信号相关性最高的IC分量

Zica_del = Zica; Zica_eye = zeros(size(Zica,1),size(Zica,2));

Zica_del(rec_no,:) = 0; Zica_eye(rec_no,:) = Zica(rec_no,:);

data_rec = AZica;

data_clean = AZica_del;

data_eog = A*Zica_eye;

%去眼电前后对比(以FP1通道的数据为例)

figure;plot(t,data_bp(1,:),‘k’);title('32通道ICA去眼电前EEG信号 ');

figure;plot(t,data_clean(1,:),‘k’);title('32通道ICA去眼电后EEG信号 ');

data_music2=data_clean;

save([SAVEPATH1,filename],‘data_music2’); %保存数据

end

%画ICA分解后ICs分量的函数plot_ICAs

% 画出ICA 独立分量

% Zica : ICs

% fs : fs

% d : offset

function plot_ICAs(Zica,fs,d)

level = length(Zica(:,1));

L = length(Zica(1,:));

t=(0:(L-1))/fs;

figure;

offs= 1:1:level;

d= 10;

for ics = 1:level

plot(t,Zica(ics,:) + offs(ics)d,‘k’);hold on;

end

ylim([0 d(level+1)]); title(‘Independent Components’);

IC = regexp(sprintf('IC-%02d ‘,[1:level]),’ ',‘split’);

set(gca,‘YTick’,[d:d:d*(level)],‘YTickLabel’,IC(1:end));

end

ICA分解后的独立分量

3明显为垂直眼电,7明显为水平眼电。

去眼电前后的脑电信号对比:

matlab去eog,使用ICA去除32通道脑电数据中的眼电相关推荐

  1. Emotiv EPOCFLEX 32导脑电仪数据准确导入EEGLAB

    1 软件基础:emotiv launcher.emotiv pro.matlab2020a.eeglab14_1_2b和eprime(本人通过eprime和emotiv_pro之间的串口通讯发送的ev ...

  2. 从.gdf格式的脑电数据中获得脑电数据,通道名称,采用频率。

    用mne库的mne.io.read_raw_gdf(path)读取gdf文件,想要读取edf文件,就将mne.io.read_raw_gdf()中的gdf改为edf即可. import mne imp ...

  3. matlab cell向量匹配向量,根据2个cell格式数据中的某二列进行匹配并合并

    clear all a=cell(9,4);    % a中的第1列为样本id, 第3列为日期 b=cell(6,3);    % b中的第1列为样本id, 第3列为日期 我想根据a中的第1列对应样本 ...

  4. 【重新定义matlab强大系列五】函数filloutliers检测并替换数据中的离群值

  5. 结合matlab代码案例解释ICA独立成分分析原理

    目录 介绍 什么是ICA? 对数据进行白化 ICA算法 ICA特性 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 关于ICA,可以查看Rose小哥之前分享的 ...

  6. 脑电数据预处理-ICA去除伪影

    ‍‍‍‍‍‍‍‍‍‍ ICA/BSS的理论与模型 独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法.ICA可线性建模如下图所示. 假设X为" ...

  7. letswave7中文教程3:脑电数据预处理-ICA去除伪影

    目录 ICA/BSS的理论与模型 第5步:计算ICA矩阵 第6步:识别伪影成分 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 ICA/BSS的理论与模型 ...

  8. 如何用ICA去除脑电信号中的干扰?

    <本文同步发布于"脑之说"微信公众号,欢迎搜索关注~~>       独立成分分析(ICA)已经成为脑电信号预处理,特别是去除干扰信号过程中一个标准流程.ICA是一种盲 ...

  9. MATLAB plot画图后横轴去除空白

    MATLAB plot画图后横轴去除空白 MATLAB plot原来画图都是填充满的,今天不知道怎么了,横轴留有一部分空白,看起来十分不美观,可以修改一下上下限使其美观一些. 方法 x轴上下限设定 x ...

  10. python去重复行_python 去除Excel中的重复行数据

    原博文 2019-08-05 16:15 − 导入pandasimport pandas as pd1.读取excel中的数据:frame = pd.DataFrame(pd.read_csv('ex ...

最新文章

  1. FLASH处理图像的移动、缩放、旋转、颜色变换的类推荐。
  2. 电脑任何字都打不出来_“有时候觉得自己一个字都写不出来了”
  3. java map 迭代遍历_java 遍历Map的四种方式
  4. php缩图代码是什么,php生成缩略图示例代码分享(使用gd库实现)
  5. Knative 初体验:CICD 极速入门
  6. 跳棋c语言,C/C++跳棋问题
  7. java编程打印以下图形,分享java打印简单图形的实现代码
  8. 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用
  9. Python模块(7)-SciPy 简易使用教程
  10. 通俗的讲,这就是容器CPU隔离的底层实现机制
  11. hdu4064 三进制状态压缩 好题!
  12. [Reinforcement Learning] Value Function Approximation
  13. java开发一个银行系统_java实现银行管理系统
  14. yapi 权限_yapi部署
  15. Day532533.Python基础 -python
  16. c语言解三色旗问题加注释,C语言经典算法——三色旗问题
  17. Scrum如何拥抱变化
  18. Unity中的重载和重写
  19. 实现cookie跨域共享的两种方式
  20. 伯克利的电气工程和计算机科学专业,优弗科普之Stanford与Berkeley的电气工程专业哪个更胜一筹?...

热门文章

  1. 使用代理服务器是否安全?
  2. golang处理NAN值
  3. java 中 isb啥意思_isb官网-新版下载
  4. 拒绝反爬虫!教你搞定爬虫验证码
  5. 以替换为主的疯狂填词、sub()介绍
  6. python 优秀的库推荐
  7. 计算机专业的梦想作文,我的梦想作文300字(通用15篇)
  8. 【寒江雪】Go实现状态模式
  9. jQuery实践-别踩白块儿网页版
  10. Android 获取手机型号,版本号等。