sortrows with cell array

3 ビュー (過去 30 日間)
MIchael
MIchael 2012 年 3 月 23 日
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 日
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 件)

カテゴリ

Help Center および 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