3

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

3 回答 3

3

这是一个更简洁的答案:

C = dot(A, B, 2);

您基本上想要行的点积。这是 MATLAB 中的一种矢量化运算,因此比元素乘积比求和运算更有效。

于 2012-05-29T16:16:43.503 回答
2

我的 matlab 有点生锈,但试试

D = A .* B;
C = D(:,1) + D(:,2);

第一个操作将生成一个 4x2 矩阵,其中包含来自 A 和 B 的相应元素的乘积,而第二个操作将来自同一行的乘积相加。

您正在寻找的结果也是矩阵产品的对角线元素,因此您可以使用

C = diag(A * transpose(B));

尽管这对于较大的矩阵来说效率非常低。

于 2012-05-28T23:03:20.203 回答
1

Aasmund Eldhuset 大部分是正确的,但我相信最后一行应该是

    C = D(:,1) + D(:,2);

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

于 2012-05-28T23:15:34.417 回答