Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在MATLAB中乘以3个向量并获得3D矩阵?_Arrays_Matlab_Matrix - Fatal编程技术网

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链接