[英]Multiplying matrix along one specific dimension
题
我正在寻找一种沿一个特定维度将两个数组相乘的优雅方法。
类似问题
在官方的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行解决方案,...)
如果我正确地解释了您的问题,那么您希望在M1
每个空间位置取每个时间切片(即1 x 1 xn
),然后将其与元素大小为nx 1
的向量M2
逐元素相乘。 bsxfun
和permute
是非常适合的情况:
M = bsxfun(@times, M1, permute(M2, [2 3 1]));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.