我正在尝试在Matlab中编写代码,这将允许我执行以下操作。有一部分代码生成一个数组D,并使用一个输入文件来创建这个名为EEG的结构,其中包含大量信息。具体来说,我对EEG结构的chanlocs字段的“标签”字段感兴趣。它包含“F7”,“F8”,“FP1”等条目以及17个此类条目。生成的数组D也包含这样的条目,但顺序不同。
因此,例如D = ['F7','F8','FP1']和EEG.chanlocs.labels = ['FP1','F7','F8'] 它们包含相同的条目,但它们的顺序不同,而且我想要做的是订单很重要。
我基本上想要做的是让Matlab扫描D的所有条目,并找到该条目对应的EEG.chanlocs.labels的特定索引。 示例:如果D(1)='F7',我希望它返回例如i = 2,因为F7是EEG.chanlocs.labels中的第2个条目。通过这种方式,我希望它扫描所有D并返回EEG.chanlocs.labels中的索引。
到目前为止我尝试的是:
for i=1:17
if any(strcmp(D(:),[EEG.chanlocs(i).labels]))
msgbox(sprintf('i is: %d',i));
else
msgbox(sprintf('Error'));
end
end
但它不起作用,它会返回奇怪的东西......我不完全确定该尝试...
有人可以帮忙吗?任何帮助将不胜感激!!
感谢。
编辑:
以下代码显示了我如何获得D.我给用户3提示窗口输入某些数据。然后我将每个输入存储在“data”或“data2”或“data3”中,然后我将它们全部放在D中。
uiwait(msgbox(sprintf('Please enter your new references for each electrode.\nFor FP1, FP2, O1 and O2 provide two references.')));
prompt = {'Fp1','F7','T3','T5','O1'};
prompt2 = {'FP2','F8','T4','T6','O2'};
prompt3 = {'C3','CP3','Cz','CPz','C4','CP4'};
dlg_title = 'Input references';
num_lines = 1;
%def = {'20','hsv'};
answer = inputdlg(prompt,dlg_title,num_lines );
answer2 = inputdlg(prompt2,dlg_title,num_lines );
answer3 = inputdlg(prompt3,dlg_title,num_lines );
for i=1:5
data(i,:) = answer(i,:);
data2(i,:) = answer2(i,:);
end
for i=1:6
data3(i,:) = answer3(i,:);
end
D(1:5)=data(:);
D(6:10)=data2(:);
D(11:16)=data3(:);
D=D';