1

如果我有一个矩阵:

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));

对于那些希望避免循环的人。尽管在这种情况下,下面显示的方法由于其可读性而更好。

4

2 回答 2

1
for i=1:5
    x = data(:,i);
    y = mean(data(:,(1:5) ~= i)')';
    R(i) = nonzeros(tril(corrcoef(x,y),-1));
end
于 2012-07-19T17:36:04.000 回答
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
于 2012-07-20T15:32:02.377 回答