计算 10000 x 10000 矩阵的互相关
Posted
技术标签:
【中文标题】计算 10000 x 10000 矩阵的互相关【英文标题】:calculating cross-correlation for a 10000 by 10000 matrix 【发布时间】:2021-08-11 16:00:19 【问题描述】:我正在使用 xcorr 如下所示
simM=xcorr(data,10,'normalized');
这里的 data 是 1200 x 1200 double ,输出即 simM 是 21*1440000 double 。现在我想计算更多的值,但我的 .系统内存只有 64 GB。对于大于 1500 x 1500 的数据,系统会发出内存不足错误。这是可以接受的。因此,根据我在 MATLAB 社区中阅读的一些答案,我发现拆分矩阵是一种选择。但你能描述一下我该怎么做吗? 对于 1100 x 1100 样本,如果可能的话,我的系统消耗的时间是 147 秒,您能否提出一种提高速度的方法。
【问题讨论】:
这不是我直接遇到的问题,但是如果您的矩阵中有很多零,则可以使用sparse matrices 进行计算。我无法帮助您了解它们的工作原理或任何故障排除,但对于有很多零的数组,它们会减少所需的内存。 感谢您分享您的经验,但我的数据不能为零,我必须在接下来的步骤中绘制该数据。 【参考方案1】:在 d 的列上循环
for i=1:1200
for j=1:1200
simulation((i-1)*1200+j)=xcorr(d(:,i),d(:,j),10,'normalize');
end
end
for speed 将你的 double 转换为 single , (single(d)) 它减少了 ram 的使用和计算时间,你可以使用 parfor 或 gpu 计算来进一步加快 for 循环。
d=single(d);
d=gpuArray(d);
...
【讨论】:
以上是关于计算 10000 x 10000 矩阵的互相关的主要内容,如果未能解决你的问题,请参考以下文章
用Python如何计算一笔定期存款10000元,一年期利率为2.25%,连本带息多少年后将翻倍