我想在我的脚本中包含一个循环,它找到每个可能的数据组合的相关性。这可以通过以下代码手动完成:
clear all
%generate fake data
LName={'Name1','Name2','Name3'};
Data={rand(12,1),rand(12,1),rand(12,1)};
%place in a structure
d = [LName;Data];
Data = struct(d{:});
%find the correlation
[R,P] = corrcoef(Data.Name1,Data.Name2);
[R2,P2] = corrcoef(Data.Name1,Data.Name3);
[R3,P3] = corrcoef(Data.Name2,Data.Name3);
但是,我想在一个循环中这样做,我已经开始但在第一个障碍时失败了。我尝试的循环无效,如下所示:
SNames=fieldnames(Data);
for i=1:numel(SNames);
[R{i},P{i}] = corrcoef(Data.(SNames{i}),Data.(SNames{i+1}));
end
我正在努力知道如何告诉matlab在每次迭代时循环使用不同的值组合。
我们非常感谢您提供的任何帮助。
答案 0 :(得分:2)
尝试这样的事情:
pairs = combnk (1:3,2) % all combinations of 2 elements taken out of the vector [1,2,3]
for i = 1 : size (pairs,1)
[R{i},P{i}] = corrcoef(Data.(SNames{pairs(i,1)}),Data.(SNames{pairs(i,2)}));
end
答案 1 :(得分:1)
@ItamarKatz答案很好。但是,如果您没有统计工具箱,则无法使用 combnk 命令 在这种情况下,您可以从此处下载combinations generator。