我有这个巨大的维度数据。
A尺寸(50,12000)和B尺寸(50,1000)。
我想计算A的每一列与B的每一列的相关性。如何有效地进行此操作
我在matlab中尝试使用corr([A B])
,但它消耗了大量内存并冻结。如何快速有效地完成这项工作?
答案 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