计算10000 × 10000矩阵的相互关系



我在下面使用xcorr

simM=xcorr(data,10,'normalized');

这里的数据是1200 * 1200的双精度,输出即simM是21*1440000的双精度。现在我想计算更多的值,但是我的。系统内存只有64 GB。对于大于1500 * 1500的数据,系统给出内存不足错误。这是可以接受的。所以根据我在MATLAB社区读到的一些答案,我发现分裂矩阵是一种选择。但是你能告诉我怎么做吗?对于1100 × 1100的样本,我的系统消耗的时间是147秒,如果可能的话,你能建议一个提高速度的方法吗?

循环d

for i=1:1200
for j=1:1200
simulation((i-1)*1200+j)=xcorr(d(:,i),d(:,j),10,'normalize');
end
end

表示速度,将double转换为single, (single(d))可以减少内存使用和计算时间,您可以使用parfor或gpu计算来进一步加快for循环。

d=single(d);
d=gpuArray(d);
...

最新更新