首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中从EEGLAB图形用户界面中的各种独立分量中提取一个特定的独立分量?

如何在MATLAB中从EEGLAB图形用户界面中的各种独立分量中提取一个特定的独立分量?
EN

Stack Overflow用户
提问于 2017-02-27 13:14:41
回答 2查看 672关注 0票数 0

我目前正在做一个关于BCI运动图像数据集的项目。我感兴趣的是通过ICA方法提取必要的组件。我目前正在使用EEGLAB来达到这个目的。你能告诉我如何将GUI中的独立分量变量提取到MATLAB的工作区中吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-05 04:49:10

在eeglab中的数据集上运行ICA后,ICA权重保存在EEG结构的icaweights矩阵中(当您的数据加载到eeglab中时,您可以在工作区中看到EEG结构),为了将icaweights转换为您在plot>Component Activations中看到的信号,假设这是您想要提取的信号,请执行以下操作:

首先,你需要加载你的数据,file>load existing dataset.

  • Choose你想要提取的组件,并将它们保存为
  1. 。作为示例,我将选择组件5和9:

comp_idx =5 9;%id我们将通道数据(这里表示为Y) extract

  • Transform到ICA激活(Y_ICA)如下:

Y= EEG.data;%将通道数据设置为矩阵Y ica_weights = EEG.icaweights;% copy icaweight矩阵Y_ICA = ica_weights*Y;% Component Activations

  • Y_ICA现在包含所有组件激活,使用Y_ICA(comp_idx,:)仅提取您需要的组件,您可以对此新矩阵执行操作,如将两个组件相加并绘制:

%%混合组件和绘图图形;S= sum( Y_ICA(comp_idx,:) );plot( EEG.times,S,'r') %EEG.times包含时间数据标题(‘所有组件的混合分别绘制每个组件:

%%绘制每个组件图形;plot( EEG.times,Y_ICA(comp_idx(1),:)) hold on plot( EEG.times,Y_ICA(comp_idx(2),:))

A注意:如果您的数据由纪元组成,那么EEG.data矩阵将是一个三维矩阵,第三维是纪元集,因此您必须对每个纪元执行上述过程,即对epoch_i = 1:size(EEG.data,3)执行Y = EEG.data(:,:,epoch_i)和iterate

票数 1
EN

Stack Overflow用户

发布于 2019-05-18 06:22:20

我不确定ReZzT的答案是否完全正确。

查看eeg_getdatact.m文件

代码语言:javascript
复制
edit eeg_getdatact

可以看出,组件激活是通过额外的矩阵乘法(使用icasphere)来计算的。看看第179-180行:

代码语言:javascript
复制
data = eeg_getdatact( EEG ); 
data = (EEG.icaweights(opt.component,:)*EEG.icasphere)*data(EEG.icachansind,:);

简而言之,最后一行可以写成:

代码语言:javascript
复制
data = (EEG.icaweights*EEG.icasphere)*eegdata;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42478246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档