如果我有一个矩阵:
data = rand(365,5);
计算每列与剩余列的平均值之间的相关性的最合适方法是什么。例如,对于第一列:
R = nonzeros(tril(corrcoef(data(:,1),mean(data(:,2:end)')'),-1));
我怎么能重复这个程序,以便我有5个相关值,即每个系列?
编辑:
感谢您的评论。这也可以在一行中完成:
R = arrayfun(@(x)nonzeros(tril(corrcoef(data(:,x),...
mean(data(:,setdiff(1:size(data,2),x))')'),-1)),1:size(data,2));
对于那些希望避免循环的人。虽然在这种情况下,由于其可读性,下面所示的方法更好。
答案 0 :(得分:1)
for i=1:5
x = data(:,i);
y = mean(data(:,(1:5) ~= i)')';
R(i) = nonzeros(tril(corrcoef(x,y),-1));
end
答案 1 :(得分:1)
略微简化的版本:
R = zeros(1,5);
for i=1:5
x = data(:,i);
y = mean(data(:,(1:5)~=i), 2);
R(i) = corr(x,y);
end