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
我有以下代码:
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