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

问题描述 投票:2回答: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开始并在1行之后增加bD的第二列列出[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];
matlab matrix matrix-indexing
2个回答
2
投票

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

E = sortrows(D,2)

1
投票

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

E = reshape(permute(reshape(D,b,size(D,1)/b,[]),[2 1 3]),size(D))
© www.soinside.com 2019 - 2024. All rights reserved.