首先,免责声明:我几乎是 Matlab 的新手(特别是 Fieldtrip 和 EEGlab)。
我正在尝试将一些 .mat 数据文件导入到 Matlab 中,这些文件已经使用 EEGlab 进行了预处理,然后通过eeglab2fieldtrip
函数转移到 Fieldtrip,在 Fieldtrip 中处理了更多,最终使用save('P_501_rnmd_cue_pru_rej_TF.mat','-struct','data_TF_rej');
. 不幸的是,由于道德原因,我还不能分享数据,但我会尝试一步一步地解释我需要做什么以及我做了什么。
我的数据是从眨眼人工制品 EEG 数据中经过时代、过滤、清理等处理的。我需要做的就是将它导入到 Matlab 中,并为每个参与者的文件,找到并计算与我的 4 个条件相对应的 4 种类型的事件。然后我需要_conditions.mat
为每个参与者创建一个文件,为这 4 个条件中的每一个提供不同的字段。
当数据为 .set 格式并且来自 EEGLab 预处理程序时,我到目前为止的代码运行良好。但是,对于来自 Fieldtrip 预处理的 .mat 文件,它变得有点棘手(不幸的是,我无法跳过这些文件)。
这是我迄今为止拥有但不起作用的内容(创建一个空的“EEG”结构或在 处出现错误并崩溃pop_loadset
):
for parc=1:length(dir('*_rnmd_cue_pru_rej_TF.mat')),
fname=dir('*_rnmd_cue_pru_rej_TF.mat');
fname=fname(parc).name;
EEG = pop_loadset('filename',fname);
data=eeglab2fieldtrip(EEG,'preprocessing')
%%% conditions:
% L1 nonswitch
% L2 nonswitch
% L1 switch
% L2 switch
%%% get all the 4 conditions:
c1=0
L1_NS=[];
c2=0
L2_NS=[];
c3=0
L1_S=[];
c4=0
L2_S=[]
for k= 1:length(EEG.epoch),
if strcmp(EEG.epoch(k).eventtype(1),'L1nonswitch')| strcmp(EEG.epoch(k).eventtype(2),'L1nonswitch'),
c1=c1+1
L1_NS(c1)=k;
end
if strcmp(EEG.epoch(k).eventtype(1),'L2nonswitch')| strcmp(EEG.epoch(k).eventtype(2),'L2nonswitch'),
c2=c2+1
L2_NS(c2)=k;
end
if strcmp(EEG.epoch(k).eventtype(1),'L1switch')| strcmp(EEG.epoch(k).eventtype(2),'L1switch'),
c3=c3+1
L1_S(c3)=k;
end
if strcmp(EEG.epoch(k).eventtype(1),'L2switch')| strcmp(EEG.epoch(k).eventtype(2),'L2switch'),
c4=c4+1
L2_S(c4)=k;
end
end
save(strcat(strtok(fname,'.'),'_conditions'),'data','L2_S','L1_S','L2_NS','L1_NS')
end
我已经搜索了一些在线解决方案,讨论该fieldtrip2eeglab
功能以及如何转置和组织 Fieldtrip 数据,以便可以返回 EEGLab(如果可能的话,这将为我节省一些麻烦),但这些都不适合我。我还附上了几张_conditions.mat
文件应该是什么样子的照片。显示的错误或多或少是我得到的错误。