问题
我正在寻找一种优雅的方法,使两个数组沿着一个特定的维度相乘。
相似问题
官方的matlab论坛上已经有了一个相似问题,但是这个线程已经过时了(2004年)。
示例
M1是一个6x4x4矩阵,M2是一个6x1矩阵,我希望(逐元素) M1与M2沿着M1的第3维乘积得到矩阵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行解,.)
发布于 2016-07-19 16:21:25
如果我正确地解释了你的问题,你想把每个时间切片(即1 x 1 x n)放在M1中的每个空间位置,然后按元素顺序乘以大小为n x 1的向量M2。bsxfun和permute非常适合这种情况:
M = bsxfun(@times, M1, permute(M2, [2 3 1]));https://stackoverflow.com/questions/38463702
复制相似问题