我有一个包含整数的大向量(长度:230 400,int8),我重新排列成一个三维矩阵(行数:240,列数:320,深度:3).完成此操作后,新矩阵包含双精度而不是整数(根据Matlab工作空间).
整个操作需要0.3秒,这对我的目的来说很长.
在将它们放入矩阵之前,Matlab是否将数组中的int转换为双精度?可以避免加速吗?
一些代码:
tic;
A=zeros(240,320,3);
%A is matrix, B is vector.
for i=1:240
for j=1:320
A(i,j,:)=B(1+(j-1)*3+(i-1)*320*3:3+(j-1)*3+(i-1)*320*3);
end
end
toc;
Run Code Online (Sandbox Code Playgroud)
谢谢!
只需在B上使用reshape.这样更快并且将保留B类.
A = reshape(B,[3,320,240]); %# makes a 3-by-320-by-240 array and distributes elements of B
A = permute(A,[3 2 1]); %# turns A into a 240-by-320-by-3 array
Run Code Online (Sandbox Code Playgroud)