Matlab中的Corrcoef很慢

时间:2015-06-10 12:10:02

标签: matlab for-loop correlation pearson

我有以下代码:

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用统计工具箱中的corr

完全删除循环
>> matrixA = randn(100, 256);
>> matrixB = randn(100, 10000);
>> size(corr(matrixA, matrixB))
ans =

   256   10000

答案 1 :(得分:1)

只需连接矩阵,计算一次操作中的所有相关性,然后提取相关的数据。

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

应该快得多。