问题
我正在寻找一种优雅的方法来将两个数组沿一个特定维度相乘。
类似问题
官方matlab论坛已经有similar question,但该帖已过时(2004年)。
示例
M1
一个[6x4x4]矩阵和M2
一个[6x1]矩阵,我想在第三维上将M1
与M2
相乘(逐个元素) 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
视觉示例
你知道一个很酷的方法吗? (没有循环,1或2行解决方案,......)
答案 0 :(得分:4)
如果我正确地解释了您的问题,您希望在1 x 1 x n
中的每个空间位置获取每个时间片(即M1
),并在元素方面将其与向量{{1}相乘大小M2
。 n x 1
和bsxfun
非常适合这种情况:
permute