将两个矩阵元素乘以求和

时间:2012-05-28 22:58:23

标签: matlab

我有两个矩阵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]

3 个答案:

答案 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);

因为你想对最后一列中的每一行求和