gpt4 book ai didi

performance - Matlab:高效和低效地乘法矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:13 25 4
gpt4 key购买 nike

问题只是矩阵 ABCD n*nx 是一个长度为 n 的向量,在 Matlab 上以最有效的方式找到 E = DCBAx ,并以最低效的方式。

计算 E 最明显的方法就是将它们直接相乘

这是最有效的方法吗?什么是效率最低的方法?

最佳答案

让我们为这个例子创建虚拟矩阵和向量。

n = 1000;
A = rand(n, n);
B = rand(n, n);
C = rand(n, n);
D = rand(n, n);
x = rand(n, 1);

然后我们可以为矩阵乘积定义一些函数句柄,在其中我们强制操作的顺序

fun1 = @() D*C*B*A*x;
fun2 = @() (D*C*B*A)*x;
fun3 = @() (D*(C*(B*A)))*x;
fun4 = @() D*(C*(B*(A*x)));

使用 timeit 进行的简单执行时间评估显示 fun1fun2fun3 的执行几乎相同方式,而 fun4 大约快 100 倍。出现这种行为的原因是,在前三种情况下,我们需要 3 个矩阵乘积和 1 个矩阵向量乘积,而在最后一种情况下,只执行 4 个矩阵向量乘积。有趣的是,当计算 fun1 时,Matlab 无法识别这个简单的优化。

关于performance - Matlab:高效和低效地乘法矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com