sorting numerically in a cell array

22 views (last 30 days)
Will Swaston
Will Swaston on 9 May 2018
Answered: Image Analyst on 9 May 2018

Hi everyone, I have a cell array that looks like this...

{'TS-G8-box7-017_0000_-0.…'} {'box7'} {'017'} {'-0.0' } {'box7_tomo_017'}

{'TS-G8-box7-017_0010_-10…'} {'box7'} {'017'} {'-10.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0016_-12…'} {'box7'} {'017'} {'-12.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0017_-14…'} {'box7'} {'017'} {'-14.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0018_-16…'} {'box7'} {'017'} {'-16.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0019_-18…'} {'box7'} {'017'} {'-18.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0006_-2.…'} {'box7'} {'017'} {'-2.0' } {'box7_tomo_017'}

{'TS-G8-box7-017_0020_-20…'} {'box7'} {'017'} {'-20.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0026_-22…'} {'box7'} {'017'} {'-22.0'} {'box7_tomo_017'}

{'TS-G8-box7-017_0027_-24…'} {'box7'} {'017'} {'-24.0'} {'box7_tomo_017'}

I'd like to sort it by column 4 numerically, I tried using sortrows() however this sorts it alphabetically, how would I go about sorting it numerically? Thanks, Will

Answers (1)

Image Analyst
Image Analyst on 9 May 2018
Try this:
% Define cell array
ca = {...
'TS-G8-box7-017_0000_-0.…', 'box7', '017', '-0.0' , 'box7_tomo_017';
'TS-G8-box7-017_0010_-10…', 'box7', '017', '-10.0', 'box7_tomo_017';
'TS-G8-box7-017_0016_-12…', 'box7', '017', '-12.0', 'box7_tomo_017';
'TS-G8-box7-017_0017_-14…', 'box7', '017', '-14.0', 'box7_tomo_017';
'TS-G8-box7-017_0018_-16…', 'box7', '017', '-16.0', 'box7_tomo_017';
'TS-G8-box7-017_0019_-18…', 'box7', '017', '-18.0', 'box7_tomo_017';
'TS-G8-box7-017_0006_-2.…', 'box7', '017', '-2.0' , 'box7_tomo_017';
'TS-G8-box7-017_0020_-20…', 'box7', '017', '-20.0', 'box7_tomo_017';
'TS-G8-box7-017_0026_-22…', 'box7', '017', '-22.0', 'box7_tomo_017';
'TS-G8-box7-017_0027_-24…', 'box7', '017', '-24.0', 'box7_tomo_017'}
% Extract column 4 and convert to doubles.
column4 = str2double(ca(:,4))
% Sort numerically.
[sortedValues, sortOrder] = sort(column4);
% Apply the sort order to the original cell array, creating a new cell array, ca2.
ca2 = ca(sortOrder, :)

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!