2

D在 Matlab 中有一个(a*b)xc具有以下结构的维度矩阵:假设a=3, b=4, c=3

D=[1 1 10; 
   1 2 11; 
   1 3 17; 
   1 4 15; 
   2 1 68; 
   2 2 6; 
   2 3 15; 
   2 4 7; 
   3 1 5; 
   3 2 43; 
   3 3 0; 
   3 4 5];

的第一列包含后行D之间1a开始1和增加的数字。列表的第二列-次。1bD[1 2 ... b]' a

我想用以下结构构造E维度矩阵(a*b)xc

E=[1 1 10; 
   2 1 68; 
   3 1 5; 
   1 2 11;
   2 2 6; 
   3 2 43; 
   1 3 17; 
   2 3 15; 
   3 3 0; 
   1 4 15; 
   2 4 7; 
   3 4 5];
4

2 回答 2

2

也许您只是想按第二列对行进行排序并且想得太复杂了:

E = sortrows(D,2)
于 2014-08-08T10:56:36.167 回答
1

对于输入数据尚未排序的一般情况,基于reshape并且permute适合的方法 -

E = reshape(permute(reshape(D,b,size(D,1)/b,[]),[2 1 3]),size(D))
于 2014-08-08T11:04:24.447 回答