簡體   English   中英

如何在MATLAB中將3個向量相乘並獲得3D矩陣?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM