簡體   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