Matlab 中的 Corrcoef 非常慢

Corrcoef in Matlab is very slow

我有以下代码:

for k = 1:256
            for t = 1:10000
                % R matrix
                buffer = corrcoef(matrixA(:,k),matrixB(:,t));
                correlation_matrix(k,t)  = buffer (2,1);
            end
        end

我计算了两个矩阵列的皮尔逊相关系数。这对我来说很好,结果是正确的。然而,这个过程似乎非常非常缓慢。有人知道如何在这里加速计算吗?

只需连接矩阵,一次运算计算所有相关性,然后提取相关性。

>> matrixA = rand(100,256);
>> matrixB = rand(100,10000);
>> matrixC = [matrixA,matrixB];
>> c = corrcoef(matrixC);
>> correlation_matrix = c(1:256, 257:10256)

应该会快很多。

您可以使用统计工具箱中的corr完全删除循环

>> matrixA = randn(100, 256);
>> matrixB = randn(100, 10000);
>> size(corr(matrixA, matrixB))
ans =

   256   10000