我有兩個矩陣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]
我有兩個矩陣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]
這裏每行一個更整潔的回答:
C = dot(A, B, 2);
你基本上想要行的點積。這是MATLAB中的一個向量化操作,因此比元素級產品更有效,然後進行求和操作。
我MATLAB是有點生疏,但儘量
D = A .* B;
C = D(:,1) + D(:,2);
第一個操作將產生一個包含4×2矩陣來自A和B的相應元素的產品,而第二次操作則添加來自同一行的產品。
你正在尋找的結果也從產品矩陣對角線元素,因此您可以使用
C = diag(A * transpose(B));
雖然這將是更大的矩陣非常低效的。
或者只是'sum(A. * B,2)' – Ansari
@Ansari:好的;我不知道'sum()'可以這種方式使用。 –
@Ansari:太好了。這是我正在尋找的。您的解決方案適用於任何規模的矩陣。如果您發表評論爲答案,我會將其標記爲正確 – Alkersan