MATLAB:矩阵乘法与非常大的数组

时间:2017-05-29 11:56:04

标签: matlab matrix-multiplication large-data

我需要使用非常大的矩阵执行矩阵乘法,例如5000x13 * 13x2000000。这会导致错误消息,因为我没有足够的内存。我理解这一点。 现在,克服这个记忆问题的最佳策略是什么?

2 个答案:

答案 0 :(得分:1)

我的建议是拆分你想要生成的数组。即使您生成阵列,也无法存储它!在MATLAB中,5000乘200万大于数组大小限制!此限制适用于每个数组的大小,而不是所有MATLAB数组的总大小。所以问题不是来自乘法。 我的建议是你用输出矩阵的四个块每5000到500K并分别写出每个块的乘法。

答案 1 :(得分:0)

您可以使用高数组。他们有关于乘法顺序的一些怪癖,所以你可能想要查阅文档。你对你想要的东西并不是很具体,所以假设你想要找到矩阵乘法的平均值。以下是使用高阵列的方法:

a = rand(5000,13).';
b = tall(rand(13,2000000).');
c = b * a;
d = mean(c,1);
e = gather(d).'; 

请注意,在高数组乘法中,只允许一个矩阵为高,如果高数组与另一个矩阵相乘,则高数组必须先出现。这就是为什么我使用transposes相当自由。

相关问题