繁体   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