Arrays 如何在MATLAB中乘以3个向量并获得3D矩阵?
我想做的是在没有循环的情况下获得如下代码片段所示的结果Arrays 如何在MATLAB中乘以3个向量并获得3D矩阵?,arrays,matlab,matrix,Arrays,Matlab,Matrix,我想做的是在没有循环的情况下获得如下代码片段所示的结果 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的速度。没有他们我如何完成任务?看一看。基于此,您可以执行以下操作: x = [1 2 3 4]; y = [2 3 4]; z=[7 8]; % replicate [x'*y] into 3D array. d
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的速度。没有他们我如何完成任务?看一看。基于此,您可以执行以下操作:
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)]))
您可以这样做,因为
z
是`向量:
bsxfun(@times, reshape(z, 1, 1, []), [x'*y])
如果z
本身是一个2D矩阵,并且您希望在每个级别执行矩阵乘法,那么您需要使用我在评论中发布的链接。但是,因为每次乘以一个标量时,您都可以使用@times
查看答案中的FEX链接