有效地计算相关系数

时间:2013-12-31 10:37:11

标签: matlab correlation

我有这个巨大的维度数据。

A尺寸(50,12000)和B尺寸(50,1000)。

我想计算A的每一列与B的每一列的相关性。如何有效地进行此操作

我在matlab中尝试使用corr([A B]),但它消耗了大量内存并冻结。如何快速有效地完成这项工作?

1 个答案:

答案 0 :(得分:2)

要计算A的每列与每个B列的相关性,请使用corr(A,B),而不是corr([A B])

如果corr(A,B)导致内存问题,请以块的形式工作。例如,以下代码将A划分为chunk_size列的垂直条带,计算每个A - 条带与B的相关性,并存储它。最终结果与corr(A,B)相同。

chunk_size = 100; %// must divide size(A,2) (easy to avoid if needed, though)
result = NaN(size(A,2),size(B,2)); %// preallocate
for ii = chunk_size:chunk_size:size(A,2)
    ind = ii+(-chunk_size+1:0);
    result(ind,:) = corr(A(:,ind),B);
end