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?

 Réponse acceptée

Oleg Komarov
Oleg Komarov le 23 Mar 2012

0 votes

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.

Plus de réponses (0)

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by