我目前正在做一个关于BCI运动图像数据集的项目。我感兴趣的是通过ICA方法提取必要的组件。我目前正在使用EEGLAB来达到这个目的。你能告诉我如何将GUI中的独立分量变量提取到MATLAB的工作区中吗?
发布于 2017-04-05 04:49:10
在eeglab中的数据集上运行ICA后,ICA权重保存在EEG结构的icaweights矩阵中(当您的数据加载到eeglab中时,您可以在工作区中看到EEG结构),为了将icaweights转换为您在plot>Component Activations中看到的信号,假设这是您想要提取的信号,请执行以下操作:
首先,你需要加载你的数据,file>load existing dataset.
comp_idx =5 9;%id我们将通道数据(这里表示为Y) extract
Y_ICA)如下:Y= EEG.data;%将通道数据设置为矩阵Y ica_weights = EEG.icaweights;% copy icaweight矩阵Y_ICA = ica_weights*Y;% Component Activations
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
发布于 2019-05-18 06:22:20
我不确定ReZzT的答案是否完全正确。
查看eeg_getdatact.m文件
edit eeg_getdatact可以看出,组件激活是通过额外的矩阵乘法(使用icasphere)来计算的。看看第179-180行:
data = eeg_getdatact( EEG );
data = (EEG.icaweights(opt.component,:)*EEG.icasphere)*data(EEG.icachansind,:);简而言之,最后一行可以写成:
data = (EEG.icaweights*EEG.icasphere)*eegdata;https://stackoverflow.com/questions/42478246
复制相似问题