[英]How do I multiply a 3D matrix and 2D matrix using numpy in Python?
[英]How do I multiply 3 vectors and obtain a 3D matrix in MATLAB?
我正在嘗試做的是獲得結果,如下面的代碼片段沒有循環。
x = [1 2 3 4];
y = [2 3 4];
z=[7 8];
[x'*y]
for k=1:size(z, 2)
z2(:,:,k)=[x'*y]*z(k);
end
z2
但是,循環可能會減慢MATLAB的速度。 沒有它們我如何處理任務?
你可以這樣做,因為z
是`vector:
bsxfun(@times, reshape(z, 1, 1, []), [x'*y])
如果z
本身就是一個2D矩陣,並且你想在每個級別進行矩陣乘法,那么你需要使用我在評論中發布的鏈接。 但是因為每次你乘以標量,你都可以使用@times
。
看看這里 。 基於此,您可以執行以下操作:
x = [1 2 3 4];
y = [2 3 4];
z=[7 8];
% replicate [x'*y] into 3D array.
d = repmat([x'*y], [1, 1, numel(z)])
% multiplay by z vector
z2 = bsxfun(@times, d, reshape(z,[1, 1, numel(z)]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.