如何在 MATLAB 中获取二维矩阵列表的所有成对相关性?

How can I get all pairwise correlations of a list of 2d matrices in MATLAB?

编辑:在接受答案后对问题进行了编辑,以使其(希望)更清楚。

给定 3d 矩阵 M(m, n, k),如何计算 (i, j) 条目为 corr(M(m, n, i), M(m, n, j)).

的 2d 相关矩阵 M(k, k)

通俗易懂

例如,我有一个 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

我尝试了循环组合 corrcoefcorr2,但没有用。

% 3d matrix
m = rand(20, 20, 100);

% wrong output
r = corrcoef(m(:, :));

你只需要重塑m,使每个矩阵线性化为一列。然后 corrcoef 给出了想要的结果:

r = corrcoef(reshape(m, [], size(m,3)));