matlab巨大矩阵的相关矩阵

Dna*_*iel 3 matlab matrix correlation

我有一个尺寸为37,000,000乘22的X矩阵,我想计算X的相关矩阵.

也就是说,

X_corr = corr(X,'type','Spearman');
Run Code Online (Sandbox Code Playgroud)

我希望X_corr的大小为22乘22.

但它需要永远,无论如何,为这样的长矩阵更快地计算相关矩阵?

谢谢!

Mem*_*ing 5

受@ Bitwise解决方案的启发,我研究了实现corr.(你可以通过简单的输入来实现edit corr.它有一个变量对的循环,因为它想要处理NaN.如果你的数据中没有NaN,你可以简单地计算Spearman的相关性:

X = rand(3e6, 22);
R = tiedrank(X); % Elapsed time is 8.956700 seconds.
C = corrcoef(X); % Elapsed time is 0.579448 seconds.
Run Code Online (Sandbox Code Playgroud)

这应该是相同的

C2 = corr(X, 'type', 'Spearman'); Elapsed time is 9.501480 seconds.
Run Code Online (Sandbox Code Playgroud)

但它的速度大致相同.