EDIT:在接受答案后对问题进行了编辑,以使其(希望(更清晰。
给定三维矩阵M(m, n, k)
,如何计算(i, j)
条目为corr(M(m, n, i), M(m, n, j))
的二维相关矩阵M(k, k)
。
Layman条款
例如,我有一个3d矩阵M(20, 20, 100)
,我需要一个2d矩阵M(100, 100)
,它是M(20, 20, i)
的每个成对组合的相关矩阵,其中i = 100
。由于M(100, 100)
是一个相关矩阵,每个单元都是一个单独的相关系数(r
(,并且矩阵是对称的:
a b c ...
a 1 r_ab r_ac
b r_ba 1 r_bc
c r_ca r_cb 1
...
Matlab MWE
我尝试了循环的组合,corrcoef
,corr2
,但没有成功。
% 3d matrix
m = rand(20, 20, 100);
% wrong output
r = corrcoef(m(:, :));
您只需要重塑m
,使每个矩阵线性化为一列。然后corrcoef
给出了想要的结果:
r = corrcoef(reshape(m, [], size(m,3)));