如何在matlab中将两列重新整形为多列

时间:2014-03-24 23:10:23

标签: matlab matrix multiple-columns reshape

有谁知道如何重塑这两列:

     1     1
     1     1
     1     1
   379   346
   352   363
   330   371
   309   379
   291   391
   271   402
   268   403
     1     1
     1     1
   406   318
   379   334
   351   351
   329   359
   307   367
   287   378
   267   390
   264   391

分为以下四列:

     1     1    1      1
     1     1    1      1
     1     1    406  318  
   379   346    379  304 
   352   363    351  351 
   330   371    329  359 
   309   379    307  367
   291   391    287  378
   271   402    267  390
   268   403    264  391

也就是说,如何在matlab中将大小为Nx2的矩阵重塑为大小10xM

1 个答案:

答案 0 :(得分:3)

使用mat2cell的一种解决方案,每10行拆分一次。可能更容易理解,因为没有使用3d矩阵:

cell2mat(mat2cell(x,repmat(10,size(x,1)/10,1),size(x,2))')

使用重塑和置换的第二个解决方案应该更快,但我没有尝试。:

reshape(permute(reshape(x,10,[],size(x,2)),[1,3,2]),10,[])