繁体   English   中英

沿一个特定维度乘以矩阵

[英]Multiplying matrix along one specific dimension

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

类似问题

在官方的matlab论坛上已经存在类似的问题 ,但是该主题已过时(2004)。

M1是[6x4x4]矩阵,而M2是[6x1]矩阵,我想将M1M2沿着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逐元素相乘。 bsxfunpermute是非常适合的情况:

M = bsxfun(@times, M1, permute(M2, [2 3 1]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM