向量化Triple For循环的总和

终身人生

当前,我正在尝试通过此三重循环构建矩阵Alpha:

Alpha = zeros(a_length, b_length);   
for a = 1:a_length
  for b = 1:b_length
      for c = 1:c_length
          Alpha(a,b) = Alpha(a,b) + Beta(c,a) * Gamma(b,c);
      end
  end
end

有没有办法将两个向量传递给Beta和Gamma矩阵,这样我就可以在一条简单的矢量化的优雅代码行中构造整个Alpha?

迪卡卡

您可以使用简单的方法matrix multiplication进行救援-

Alpha = (Gamma*Beta).'

或者这样-

Alpha = Beta.'*Gamma.'

还是有点复杂bsxfun的方法-

Alpha = sum(bsxfun(@times,permute(Gamma,[3 1 2]),permute(Beta,[2 3 1])),3)

如果您想避免permute采用较早的bsxfun方法,

Alpha = squeeze(sum(bsxfun(@times,Gamma,permute(Beta,[3 1 2])),2)).'

或这个 -

Alpha = squeeze(sum(bsxfun(@times,Beta.',permute(Gamma,[3 2 1])),2))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章