假設我有矩陣A = [1 2; 3 4], B = [4 3; 2 1]
。我想將矩陣A ([1; 3], [2; 4])
中的每列乘以矩陣B ([4 3], [2 1])
中的對應行和求和矩陣。我想出了下面的代碼:將矩陣中的每列乘以另一個矩陣中的相應行,並在Matlab中求和結果
C = zeros(size(A));
for i = 1 : size(A, 1)
C = C + A(:, i) * B(i, :);
end
它可以重寫使用一些數學技巧或matlab函數來擺脫for循環?
我看到我的問題關於我想要的結果是不明確的。結果應該完全模仿提供的Matlab代碼,因此我尋求一個矩陣,它是通過將每個列向量與來自兩個矩陣的相應行向量相乘而創建的中間矩陣的矩陣求和而給出的。對於這個具體的例子,它會通過
C = A(:, 1) * B(1, :) + A(:, 2) * B(2, :);
給予我只是在尋找一個兼容維度的任何矩陣一些通用的,用於循環較少的版本。
我根本不知道matlab,但從我的研究中,這應該工作:'C = A * B',然後'result = sum(C(:))'。這是否提供了您正在尋找的結果?來源:https://www.tutorialspoint.com/matlab/matlab_matrix_multiplication.htm,https://www.mathworks.com/matlabcentral/newsreader/view_thread/51252 – Jonathan
根據您的更新,@ jodag的答案是正確的。 'C = A * B'等價於你的matlab代碼。 – Jonathan