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