[英]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.