沿一个特定维度乘以矩阵

时间:2016-07-19 16:14:48

标签: arrays matlab vectorization matrix-multiplication

问题

我正在寻找一种优雅的方法来将两个数组沿一个特定维度相乘。

类似问题

官方matlab论坛已经有similar question,但该帖已过时(2004年)。

示例

M1一个[6x4x4]矩阵和M2一个[6x1]矩阵,我想在第三维上将M1M2相乘(逐个元素) M1得到矩阵M [6x4x4]

相当于:

M1 = rand(6,4,4);
M2 = rand(6,1);

for ii = 1:size(M1,2)
   for jj = 1:size(M1,3)
      M(:,ii,jj) = M1(:,ii,jj).*M2;
   end
end

视觉示例

multiplication along one particular dimension

你知道一个很酷的方法吗? (没有循环,1或2行解决方案,......)

1 个答案:

答案 0 :(得分:4)

如果我正确地解释了您的问题,您希望在1 x 1 x n中的每个空间位置获取每个时间片(即M1),并在元素方面将其与向量{{1}相乘大小M2n x 1bsxfun非常适合这种情况:

permute