【发布时间】:2016-03-06 08:19:54
【问题描述】:
我想根据元胞数组第一列中写入的层次结构对元胞数组表 (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 列中的名称可能出现两次,例如“Golf”、“Golf”。
我编写了一个非常复杂的脚本,它适用于这个简单的示例,但不适用于更大的表。现在我想知道是否有一种简单的方法可以使用一千个 matlab 函数?
谢谢!
【问题讨论】:
-
这有点令人困惑,您的第二个表包含与第一个“未排序”表不同的条目 - 例如
1.1.1、3.1.1等。我认为这不是故意的? -
不,这正是排序的目的。我试着更清楚地描述它:想象一个顶层,其中包括 3 个子层:奥迪、大众、梅赛德斯。这些子层包括其他子层,如 A1、A2 等。这是父/子关系。现在我想对不同的层进行排序,当然子层的索引必须相应地改变。我希望它有助于理解问题
标签: matlab sorting cell-array