以字典排序方式对单元格数组进行排序?

时间:2014-02-26 22:53:37

标签: arrays matlab sorting

我有一个100x3单元格数组,每个元素都是一个字符串。现在我希望根据第1栏进行排序。我可以很容易地做到这一点

sorted1 = sortrows(data, 1);

但是,我不想在这里停下来。我希望根据第二栏进一步排序。当然,这种排序不能破坏第一次排序。换句话说,它非常类似于字典的排序方式。

我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

sortrows会继续按其他列排序,如果您也指定它们:

>> data = {'banana','blue','cow'; 
           'zebra','ape','frog';
           'banana', 'apple', 'pear';
           'banana', 'apple', 'orange'};
>> sorted1 = sortrows(data, 1)
sorted1 = 
    'banana'    'blue'     'cow'   
    'banana'    'apple'    'pear'  
    'banana'    'apple'    'orange'
    'zebra'     'ape'      'frog'  
>> sorted1 = sortrows(data, [1 2])
sorted1 = 
    'banana'    'apple'    'pear'  
    'banana'    'apple'    'orange'
    'banana'    'blue'     'cow'   
    'zebra'     'ape'      'frog'  

请注意,通过使用[1 2]排除第3列,不会浪费时间按第3列排序('pear'仍然在'orange'之前)。