Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Performance 数组乘法的矢量化_Performance_Matlab_Matrix_Vectorization - Fatal编程技术网

Performance 数组乘法的矢量化

Performance 数组乘法的矢量化,performance,matlab,matrix,vectorization,Performance,Matlab,Matrix,Vectorization,我有一个3d数组U和一个2d矩阵a。我想用下面的方法做乘法。如何将代码矢量化?当然,这个循环太慢了 for j=1:N for k=1:N UU(:,j,k)=A*U(:,j,k); end end 根据矩阵的大小,您可能会发现消除两个循环会占用大量内存,并且只删除列上的循环就足够了 for k = 1:N UU(:,:,k) = A*U(:,:,k); end 将U重塑为2D并执行矩阵乘法,从而使用A的最后一个轴减少U的第一个轴/维度,从而得到一个2D数组。最后,将形状改回3D

我有一个3d数组U和一个2d矩阵a。我想用下面的方法做乘法。如何将代码矢量化?当然,这个循环太慢了

for j=1:N
 for k=1:N
 UU(:,j,k)=A*U(:,j,k);
 end
end

根据矩阵的大小,您可能会发现消除两个循环会占用大量内存,并且只删除列上的循环就足够了

for k = 1:N
   UU(:,:,k) = A*U(:,:,k);
end

U
重塑为
2D
并执行矩阵乘法,从而使用
A
的最后一个轴减少
U
的第一个轴/维度,从而得到一个2D数组。最后,将形状改回
3D
以获得最终结果,如下所示-

[m1,n1] = size(A);
[~,m2,n2] = size(U);
out = reshape(A*reshape(U,[n1,m2*n2]),[m1,m2,n2])