假设我有矩阵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