2015-06-10 41 views
0

我有以下代碼:Corrcoef在Matlab很慢

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 

我計算兩個矩陣的列的Pearson相關。這對我來說很好,結果是正確的。然而這個過程似乎非常緩慢。有沒有人有一個想法如何加快這裏的計算?

回答

3

您可以完全使用從統計corr消除環路工具箱

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

    256 10000 
1

只是連接矩陣,計算一個操作中的所有相關性,然後提取相關的。

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

應該快很多。

+0

非常感謝你。它可以工作,但是對於大型矩陣,會出現「內存不足異常」。使用corr會更有效率。 – JoeLiBuDa