如何将matlab矢量转换为3D矩阵

时间:2014-07-07 01:48:13

标签: matlab matlab-figure

我有一个s向量,其大小为1*163840,来自sizeX * sizeY * sizeZ = 64 * 40 * 60。我想将1 * 163840矢量转换为三维矩阵,其在x轴上为64,在y轴上为40,在z轴上为64。

转换它的最简单方法是什么?

3 个答案:

答案 0 :(得分:4)

使用重塑来轻松完成:

new_matrix = reshape(s, 64, 40, 60);

答案 1 :(得分:1)

reshape是将元素重新排列为不同形状的正确方法,如Ben所指出的那样。
但是,必须注意向量和结果数组中元素的顺序:

 >> v = 1:12;
 >> reshape( v, 3, 4 )
 1     4     7    10
 2     5     8    11
 3     6     9    12

Matlab首先安排元素"列"。
如果你想先得到一个"排"安排,你需要更复杂,并使用permute

>> permute( reshape( v, 4, 3 ), [2 1] ) 
 1     2     3     4
 5     6     7     8
 9    10    11    12

了解我们如何reshape到4-by-3(以及 3-by-4)然后使用permute命令转置结果。

答案 2 :(得分:0)

像这样初始化矩阵:

smatrix=zeros(64,40,60) // here you get an empty 3D matrix of the size you wanted. 

使用for循环使用向量填充矩阵

for indexx=1:64
   for indexy=1:40
       for indexz=1:60
           smatrix(indexx,indexy,indexz)=s(40*60*(indexx-1)+60*(indexy-1)+indexz);
       end
   end
end