我正在尝试编写一个简短的Matlab代码来执行某个数学函数。该代码生成一个向量H,其中包含1,2或3的条目(大小取决于其他因素)。 (在我看来),数字1,2和3对应于三个特定的矩阵。一旦我的程序计算了H,我希望它能够将其条目所代表的所有矩阵相乘。为了澄清,如果H = [1 2 3 2],我想要我的代码来计算A * B * C * B.这样做最简单的方法是什么?我想创建一个带有矩阵条目的向量,并使用一个函数来给出向量条目的乘积,但是我无法使它工作(并且不知道它是否可以工作 - 我是对Matlab来说很新鲜)。
理想情况下,我宁愿不重写我的其余代码 - 如果有办法让它与我迄今为止所做的工作一起工作,那就太棒了。我正在寻找功能而不是光滑的编码 - 只要它有效,它是否笨拙并不重要。
答案 0 :(得分:2)
matrices = {A,B,C,D};
result = matrices{H(1)};
for i=2:numel(H)
result = result * matrices{H(i)};
end
答案 1 :(得分:0)
将所有矩阵放在另一个matice中,然后您可以使用H的值作为选择正确矩阵的关键matices = [A, B, C, D]
。然后,您将逐个进行H
并将其与最后一次操作的结果相乘。你将从与其他矩阵具有相同维度的对角矩阵开始,并在循环的每一轮中将其与matrices
核心中的矩阵相乘,其值为H
matrices = [A, B, C, D]
// d is dimension of your matrices (i guess they are square)
erg = diag(d)
for i=length(H):1
// supposed your matices are 2d
erg = matrices(H(i),:,:)*init
end
我不知道这里是否有意义从左侧乘以每一步(就像你在openGL中那样)但我认为这允许你分步操作(就像在openGL中完成的那样)