【发布时间】:2016-08-27 21:51:40
【问题描述】:
我有一个矩阵 m 这样的数组
m1 = [1 2;3 4];
m2 = [2 7; 8 9];
m3 = [9 7; 8 91];
m = [m1 m2 m3]
m =
1 2 2 7 9 7
3 4 8 9 8 91
我也有一个向量
v = [1 2 3];
这样我希望 v 和 m 之间的操作导致 h 使得
h = [1*m1 2*m2 3*m3] = [h1 h2 h3];
我想我必须在h 的 3 维数组中执行此操作,这是一个 3 维数组。或者也许有更好的方法。
让 A 是一个简单的 2 × 2 矩阵,rand(2,2)。
从h 我想提取h1 h2 和h3 输出(或者最好不进行任何提取)并对A 执行操作,这样
1.
h1*A*h1'
h2*A*h2'
h3*A*h3'
和
2.
h1*h1', h2*h2', h3*h3'.
我为什么要在数组中这样做是因为我有很多矩阵 mi,所以我想通过矢量化来避免 for 循环。
【问题讨论】:
-
您可能希望将
m设为 2x2x3 而不是 2x6。这对你的问题有用吗?我不确定它是否会有所帮助,但请查看 bsxfun (或类似的)命令。永远不要低估用于乘法运算的 for 循环,但矢量化总是很有趣 ;)
标签: matlab optimization vectorization