帮助减少内存使用在大型矩阵乘法

9的观点(30天)
我有一定的343 - 343 - 343矩阵V3和一定的-到- 1向量V2由特定的算法,我想做以下操作:
V4 = V3 * (V2-I * C)
我眼睛=(343),和C是一个向量的零,除了172的元素,也就是1。我提供V3和V2的工作区文件附件。V2的大小实际上是大尽管只有343种元素,因为元素包含符号(即“t”)和数字。但是这些元素的冗长的价值观是至关重要的。
问题是,内存使用量的计算是14.5 GB (15.284 GB),并计算相当缓慢。因为我打算做更大的规模计算,这对我来说是很有问题的。
有什么解决方法,防止使用太多内存?还是有什么我能做的除了扩大内存吗?
2的评论
导演是
导演是 2018年5月29日
编辑:导演是 2018年5月29日
谢谢你KSSV。
嗯,问题是,我计划t =正或t = 0:0.000002:0.005。
对于前者,我知道这是要收敛一旦我把t =正计算后最终完成,但是我不知道是否会偏离或收敛之前如果我把t =正计算完成。
对于后者,你是对的。我可以把价值和使用数组计算或for循环。问题是我不知道方程本身,以防我需要重新调节t别的东西的价值。

登录置评。

答案(1)

谢尔盖·卡西亚诺夫
谢尔盖·卡西亚诺夫 2018年6月9日
编辑:谢尔盖·卡西亚诺夫 2018年6月9日
我认为这个问题是可以解决手工矩阵的乘法。
%注意:V2 = (V2-I * C)是相同的V2 = V2 (172) 1 (172);
V2 = V2 (172) 1 (172);
= vpa(0(长度(V2), 1));
V2 = V2。';
i = 1:长度(V2)
(我)=总和(V3(我:)。* V2);
结束
一个 就是答案。
1评论
谢尔盖·卡西亚诺夫
谢尔盖·卡西亚诺夫 2018年6月9日
你也可以使用这个解决方案。它声称少内存但由于转换精度整数比例系数浮动。
V2 = V2 (172) 1 (172);
= vpa(0(长度(V2), 1));
V2 = vpa (V2。');
i = 1:长度(V2)
(我)=总和(V3(我:)。* V2);
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!