如何在matlab中用矩阵运算替换这个for循环

use*_*004 0 matlab for-loop

我知道在Matlab中编写for循环通常效率不高.现在我试图用更好的选项替换嵌套的for循环.这是嵌套循环,

for i = 1: size(A,1)
   for j = 1: size(B,1)
      S(i,j, :) = c*(A(i,:)*a - B(j,:)*b);
   end
end
Run Code Online (Sandbox Code Playgroud)

我应该使用什么操作?(我在考虑笛卡尔积的实施)

Tal*_*anL 6

请尝试以下方法

AA = permute(A * a, [1, 3, 2]);
BB = permute(B * b, [3, 1, 2]);
CC = c * bsxfun(@minus, AA, BB);
Run Code Online (Sandbox Code Playgroud)