sorting numerically in a cell array

22 visualizzazioni (ultimi 30 giorni)
Will Swaston
Will Swaston il 9 Mag 2018
Risposto: Image Analyst il 9 Mag 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

Risposte (1)

Image Analyst
Image Analyst il 9 Mag 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, :)

Categorie

Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by