关于使用ICA,可以采用mne的库来进行实现。具体可以查看官网:ICA使用

ICA的大致原理是:找到一个分解的矩阵,将原始数据分解成时间独立和空间固定的分量之和。然后先根据自己的经验去除伪迹分量,再通过将无伪影的ICA成分的总和投影回头皮。获得了无伪影事件相关的大脑信号。

今天我是想要记录如何将一个原始脑电信号【n_channel,times】进行ICA处理:

batch_channel = ['Fp1', 'Fp2', 'Fz', 'F3', 'F4', 'F7', 'F8', 'FC1', 'FC2', 'FC5', 'FC6', 'Cz', 'C3', 'C4', 'T7', 'T8', 'CP1', 'CP2', 'CP5', 'CP6', 'Pz', 'P3', 'P4', 'P7', 'P8', 'PO3', 'PO4', 'Oz', 'O1', 'O2', 'A2', 'A1']types = ['eeg']*32def butter_bandpass(low_cut, high_cut, fs, order=4):""":param low_cut: low frequency:param high_cut: high frequency:param fs: sampling rate of the signal:param order: order of the filter:return: numerator (b) and denominator (a) polynomials of the IIR filter"""nyq = 0.5 * fslow = low_cut / nyqhigh = high_cut / nyqb, a = signal.butter(order, [low, high], btype='band')return b, adef preprocess(eeg_rawdata):""":param eeg_rawdata: numpy array with the shape of (n_channels, n_samples):return: filtered EEG raw data"""print(eeg_rawdata.shape)low_cut, high_cut, fs = 0.5, 50, 250# 对脑电数据进行巴特沃斯滤波(这一步也可以利用mne的库进行处理)b, a = butter_bandpass(low_cut, high_cut, fs)filted_eeg_rawdata = signal.lfilter(b, a, eeg_rawdata)# n_channels = 32## 把原始的数据改为mne中的raw的数据格式,因为在后面采用ica的方法的时候需要用到raw的格式而不是np.ndarray的形式。info = mne.create_info(ch_names=batch_channel, sfreq=fs, ch_types=types)# print(info)raw = mne.io.RawArray(data=filted_eeg_rawdata, info=info)print("************")print(raw.get_data())# 去除伪影#说明一下这边的成分设置n_components,就是最后将原始数据分解成多少独立成分的意思,当然n_components越多越好,但是成分变多会使运算的速度变慢。ica = ICA(n_components=20, random_state=97, max_iter=800)# 先fit一下查看有哪些伪影,然后apply一下就可以应用到原始数据了。ica.fit(raw)ica.plot_sources(raw, show_scrollbars=False)print("***********")ica.exclude = [1, 2]raw.load_data()ica.apply(raw)print(raw.get_data())print(raw.get_data().shape)return raw.get_data()

如何使用ICA(独立成分分析)来去除伪影相关推荐

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

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

  2. ICA独立成分分析去除脑电伪影

    今天分享的这篇利用独立成分分析ICA去除EEG伪影是翻译自jung大神的一篇文章. 目录 1 介绍 2 方法 3 实验数据样本 1 介绍 眼动,眨眼,肌肉,心脏和线的噪音会严重污染脑电图活动,这在脑电 ...

  3. 鸡尾酒宴会问题---ICA独立成分分析[原创]

    作者:einyboy or alert (注本文有些图片来源于网络) 鸡尾酒宴会问题:       假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Mic ...

  4. ICA独立成分分析去除EEG伪影

    目录 介绍 ICA假设 方法 组件投影 实验数据样本 移除眨眼和肌肉伪影 一些严重污染的脑电数据 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群1:903290195(已满,请 ...

  5. ICA独立成分分析—FastICA基于负熵最大

    1. 概念 官方解释:利用统计原理进行计算的方法,是一种线性变换. ICA分为基于信息论准则的迭代算法和基于统计学的代数方法两大类,如FastICA算法,Infomax算法,最大似然估计算法等. 这里 ...

  6. ICA(独立成分分析)笔记

    ICA又称盲源分离(Blind source separation, BSS) 它假设观察到的随机信号x服从模型,其中s为未知源信号,其分量相互独立,A为一未知混合矩阵. ICA的目的是通过且仅通过观 ...

  7. 【机器学习】【ICA-2】ICA独立成分分析的原理 + ICA前的预处理(中心化+漂白)

    前情提示:ICA算法成立的前提是:假设每个人发出的声音信号各自独立. 1.鸡尾酒宴会问题 n个人在一个房间开party,房间的不同配置摆放了n个声音接收器,每个接收器在每个时刻同时采集到n个人声音的重 ...

  8. sklearn自学指南(part50)--独立成分分析(ICA)

    学习笔记,仅供参考,有错必纠 文章目录 分解信号的分量(矩阵分解问题) 独立成分分析(ICA) 分解信号的分量(矩阵分解问题) 独立成分分析(ICA) 独立成分分析将一个多变量信号分离成最大程度独立的 ...

  9. ICA:独立成分分析

    本文是转载自:ICA:独立成分分析.下面开始介绍: 独立成分分析(Independent Component Analysis) 1. 问题: 1.上节提到的PCA是一种数据降维的方法,但是只对符合高 ...

最新文章

  1. jquery获取元素在文档中的位置信息以及滚动条位置(转)
  2. 大神的xml解析之路
  3. 各种门锁的内部结构图_双核CUP,电镀真金把手,0.3秒开锁,欧瑞博智能门锁S2评测...
  4. IR2104s半桥驱动使用经验
  5. 即将消失的十大热门技术---竟然有java,还是学asp.net去吧.跟微软混没错!
  6. QPainter类的CompositionMode各值含义
  7. UVA 567 - Risk
  8. dingo php,dingo 配置
  9. java飞机大战分数累加代码_JAVA 基础编程练习题39 【程序 39 分数累加】
  10. SQL Server AlwaysOn集群在辅助副本创建只读账号
  11. C中指针和数组引发的探索二
  12. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(五)
  13. 如何基于AngularJS部分视图动态更改标头?
  14. elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch
  15. 【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
  16. 卡巴斯基蓝屏解决方案
  17. 机器人领域SCI期刊总结
  18. mysql容灾方案_mysql 容灾 灾备 备份
  19. win7 系统定时开关机
  20. 数据上链——区块链相关概念

热门文章

  1. Django+Vue,前后端分离,实现用户权限认证
  2. 2018/12/14
  3. 酷睿i5 9400f属于什么档次 i5 9400f参数 怎么样
  4. 8 相对布局——RelativeLayout
  5. 我怀念的何止是那片土地
  6. Labelary Online ZPL Viewer
  7. 03-Swif-associatedtype的作用
  8. Question2Answer页脚版权链接修改
  9. Fiddler如何抓包?
  10. 引流的方法有哪些?所有的引流,都离不开这二种方法!