我有两个矩阵4x2。如何实现这样的乘法:输出应该是矩阵4x1,其中每个元素是原始矩阵中行中元素乘积的总和。 像这样:
[1 2;
A = 3 4;
5 6;
7 8]
[1 2;
B = 3 4;
5 6;
7 8]
结果C矩阵将是:
[1*1 + 2*2;
C = 3*3 + 4*4;
5*5 + 6*6;
7*7 + 8*8]
答案 0 :(得分:2)
我的matlab有点生疏,但试试
D = A .* B;
C = D(:,1) + D(:,2);
第一个操作将生成一个4x2矩阵,其中包含A和B中相应元素的乘积,而第二个操作则添加来自同一行的乘积。
您正在寻找的结果也是矩阵产品的对角线元素,因此您可以使用
C = diag(A * transpose(B));
尽管对于较大的矩阵来说这将是非常低效的。
答案 1 :(得分:2)
这是一个更简洁的答案:
C = dot(A, B, 2);
你基本上想要行的点积。这是MATLAB中的一个向量化操作,因此比元素方式的产品更有效,然后是求和操作。
答案 2 :(得分:1)
Aasmund Eldhuset大多是正确的,但我相信最后一行应该是
C = D(:,1) + D(:,2);
因为你想对最后一列中的每一行求和