我想根据单元格数组第一列中写入的层次结构对单元格数组(Nx2)进行排序。
例如:
MdlTbl={'1','VW';
'1.1', 'Golf';
'1.2', 'Passat';
'1.3', 'Polo';
'2','Mercedes';
'2.1', 'A-Klasse';
'2.1.1', 'Grün';
'2.1.2', 'Rosa';
'2.1.3', 'gelb';
'2.2', 'B-Klasse';
'2.3', 'e-Klasse';
'2.4', 'G-Klasse';
'3','Audi';
'3.1', 'A1';
'3.1.1', 'Schwarz';
'3.1.2', 'Karriert';
'3.2', 'A2';};
对于字母顺序,结果应如下所示:
SortModel =
'1' 'Audi'
'1.1' 'A1'
'1.1.1' 'Karriert'
'1.1.2' 'Schwarz'
'1.2' 'A2'
'2' 'Mercedes'
'2.1' 'A-Klasse'
'2.1.1' 'gelb'
'2.1.2' 'Grün'
'2.1.3' 'Rosa'
'2.2' 'B-Klasse'
'2.3' 'e-Klasse'
'2.4' 'G-Klasse'
'3' 'VW'
'3.1' 'Golf'
'3.2' 'Passat'
'3.3' 'Polo'
排序方式(例如按字母顺序排列)并不重要。它只适用于统一的不同表格,然后将它们相互比较。 层次结构的深度以及表的长度可能不同。第2列中的名称可能会出现两次,例如'高尔夫','高尔夫'
我编写了一个非常复杂的脚本,该脚本适用于这个简单的示例,但不适用于更大的表。现在我想知道是否有一种简单的方法可以使用其中一个matlab函数吗?
谢谢!
答案 0 :(得分:1)
我不确定我是否能正确解决问题 - 但sortrows
几乎可以解决您所寻找的问题:
>> sortrows(MdlTbl)
ans =
'1' 'VW'
'1.1' 'Golf'
'1.2' 'Passat'
'1.3' 'Polo'
'2' 'Mercedes'
'2.1' 'A-Klasse'
'2.1.1' 'Grün'
'2.1.2' 'Rosa'
'2.1.3' 'gelb'
'2.2' 'B-Klasse'
'2.3' 'e-Klasse'
'2.4' 'G-Klasse'
'3' 'Audi'
'3.1' 'A1'
'3.1.1' 'Schwarz'
'3.1.2' 'Karriert'
'3.2' 'A2'