在Matlab中对数据进行排序

时间:2015-08-28 09:19:26

标签: matlab sorting

我正在尝试在Matlab中对以下数据进行排序,但没有得到我需要的预期输出。

这是数据:

'1B-3A-5A'
'1A-3A-19A'
'2A-2A-4A-5A'
'2B-2A-5A'
'2A-4A-5A'
'2C-5A-30A'
'11A-3A-19A
'3A-19A-42C'
'4A-4A-12A'
'19A-21A-42C'
'25A-41D'
'41C-41C'
'39C-41C'
'43E'
'39A-41D'
'1A-3A-5A-7A'
'7C-27A-28A'

我需要排序列表,以便它考虑第一个数字,然后是字母表,对列表进行排序,如下所示

'1A-3A-19A'
'1A-3A-5A-7A'
'1B-3A-5A'
'2A-2A-4A-5A'
'2A-4A-5A'
'2B-2A-5A'
'2C-5A-30A'
'3A-19A-42C'
'4A-4A-12A'
'7C-27A-28A'
'11A-3A-19A
'19A-21A-42C'
'25A-41D'
'39A-41D'
'39C-41C'
'41C-41C'
'43E'

你能建议一种方法吗?我尝试过所有方法,但它没有像我想要的那样排序。谢谢!

1 个答案:

答案 0 :(得分:0)

如何使用sortsortrows?这实际上也对字符串进行排序:

  

如果A是字符串,则sort(A)根据ASCII字典顺序排序。排序区分大小写,大写字母出现在小写字母之前的输出中。

正如@StewieGriffin所指出的,这会在11a之前对1a进行排序。方便的是道格拉斯施瓦茨已经制作了一个code,它完全克服了数字首字母数字排序和字符数字排序的问题。