在Matlab中包含整数而不是双精度的矩阵

时间:2011-01-22 14:52:31

标签: matlab

我有一个包含整数的长矢量(长度: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;

谢谢!

2 个答案:

答案 0 :(得分:7)

只需在B上使用重塑。这样更快,并且会保留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

答案 1 :(得分:2)

尝试使用

初始化矩阵
A=zeros(240, 320, 3, 'int8')