通过选择固定距离的行在Matlab中重塑矩阵

时间:2014-08-08 10:52:08

标签: matlab matrix matrix-indexing

我在维度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开始,1行后b增加。 D的第二列列出[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];

2 个答案:

答案 0 :(得分:2)

也许您只想按第二列对行进行排序,并且认为过于复杂:

E = sortrows(D,2)

Best,Nras。

答案 1 :(得分:1)

对于尚未对输入数据进行排序的一般情况,基于reshapepermute的方法适合 -

E = reshape(permute(reshape(D,b,size(D,1)/b,[]),[2 1 3]),size(D))