sortrows with cell array

BULK_LIST = sortrows(BULK_LIST, [1 5 2 3 4 6]);
Outputs:
'BULK' 'ED' '2011' '12' 'Default' 'B' '18'
'BULK' 'ED' '2011' '9' 'Default' 'S' '18'
'BULK' 'ES' '2011' '3' 'Default' 'S' '1'
'BULK' 'FFI' '2011' '3' 'Default' 'S' '1'
'BULK' 'LGO' '2011' '3' 'Default' 'S' '1'
'1020' 'ED' '2011' '12' 'Default' 'B' '18'
'1020' 'ED' '2011' '9' 'Default' 'S' '18'
'1020' 'ES' '2011' '3' 'Default' 'S' '1'
'1020' 'FFI' '2011' '3' 'Default' 'S' '1'
'1020' 'LGO' '2011' '3' 'Default' 'S' '1'
Desired Output:
'BULK' 'ED' '2011' '9' 'Default' 'S' '18'
'BULK' 'ED' '2011' '12' 'Default' 'B' '18'
'BULK' 'ES' '2011' '3' 'Default' 'S' '1'
'BULK' 'FFI' '2011' '3' 'Default' 'S' '1'
'BULK' 'LGO' '2011' '3' 'Default' 'S' '1'
'1020' 'ED' '2011' '9' 'Default' 'S' '18'
'1020' 'ED' '2011' '12' 'Default' 'B' '18'
'1020' 'ES' '2011' '3' 'Default' 'S' '1'
'1020' 'FFI' '2011' '3' 'Default' 'S' '1'
'1020' 'LGO' '2011' '3' 'Default' 'S' '1'
It appears that sortrows, when looking at '12' and '9' sorts off of the 1 in '12' and doesn't treat it as a 12.
How do I fix this?

 採用された回答

Oleg Komarov
Oleg Komarov 2012 年 3 月 23 日

0 投票

Convert the string of numbers to doubles.
bulk_list = {'BULK' 'ED' '2011' '12' 'Default' 'B' '18'
'BULK' 'ED' '2011' '9' 'Default' 'S' '18'
'BULK' 'ES' '2011' '3' 'Default' 'S' '1'
'BULK' 'FFI' '2011' '3' 'Default' 'S' '1'
'BULK' 'LGO' '2011' '3' 'Default' 'S' '1'
'1020' 'ED' '2011' '12' 'Default' 'B' '18'
'1020' 'ED' '2011' '9' 'Default' 'S' '18'
'1020' 'ES' '2011' '3' 'Default' 'S' '1'
'1020' 'FFI' '2011' '3' 'Default' 'S' '1'
'1020' 'LGO' '2011' '3' 'Default' 'S' '1'}
bulk_list(:,[3:4, 7]) = cellfun(@str2double , bulk_list(:,[3:4, 7]),'un',0)
Then do the sorting.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeData Type Conversion についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by