例如:
B1 = 1*A1 + 2*A2;
B2 = 3*A1 + 4*A2;
B1、B2、A1、A2 都是 2 x 2 矩阵。
如何有效地定义 B 矩阵?通过执行以下操作:
[B1;B2] = [1 2;3 4]*[A1;A2]
失败了。我想做这样的事情,因为我的任务不仅仅是定义两个矩阵,以便我可以手动输入它。
最佳答案
使用矩阵乘法
的实现
假设有一个2D
数组scale
来存储缩放参数。因此,对于我们的情况,我们会 -
scale = [1 2;3 4];
首先,将 A 矩阵
堆叠为 3D 数组 -
A = cat(3,A1,A2); % Add more matrices here
最后,计算本身可以在 reshape 为2D
之后实现为矩阵乘法,并在矩阵乘法之后再进行一次 reshape 以获得这些B矩阵
堆叠为 3D 数组 -
B = reshape(reshape(A,4,[])*scale.',2,2,[])
关于MATLAB:将新矩阵定义为矩阵的线性组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689457/