如何在 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
我尝试了循环组合 corrcoef
、corr2
,但没有用。
% 3d matrix
m = rand(20, 20, 100);
% wrong output
r = corrcoef(m(:, :));
你只需要重塑m
,使每个矩阵线性化为一列。然后 corrcoef
给出了想要的结果:
r = corrcoef(reshape(m, [], size(m,3)));
编辑:在接受答案后对问题进行了编辑,以使其(希望)更清楚。
给定 3d 矩阵 M(m, n, k)
,如何计算 (i, j)
条目为 corr(M(m, n, i), M(m, n, j))
.
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
我尝试了循环组合 corrcoef
、corr2
,但没有用。
% 3d matrix
m = rand(20, 20, 100);
% wrong output
r = corrcoef(m(:, :));
你只需要重塑m
,使每个矩阵线性化为一列。然后 corrcoef
给出了想要的结果:
r = corrcoef(reshape(m, [], size(m,3)));