Sorting cell arrays with characters and numbers

8 views (last 30 days)
Given a cell array such as {'a1', 'a2', 'a3'...'a9', 'a10', 'a11','a12'}, in random order ofcourse, using the sort function gives me {'a1', 'a10', 'a11','a12','a1','a2',...'a9'}. What method can be used to get the right order?

Accepted Answer

Stephen23
Stephen23 on 30 Oct 2022
Edited: Stephen23 on 30 Oct 2022
"What method can be used to get the right order?"
You could download my FEX submission NATSORT:
unzip it onto your MATLAB search path or into the current directory, then call it like this:
C = {'a11', 'a9', 'a3', 'a2', 'a12', 'a1','a10'}
C = 1×7 cell array
{'a11'} {'a9'} {'a3'} {'a2'} {'a12'} {'a1'} {'a10'}
D = natsort(C)
D = 1×7 cell array
{'a1'} {'a2'} {'a3'} {'a9'} {'a10'} {'a11'} {'a12'}

More Answers (1)

Walter Roberson
Walter Roberson on 30 Oct 2022
Edited: Walter Roberson on 30 Oct 2022
MATLAB already gives the "right" order, just not the order you want.
https://www.mathworks.com/matlabcentral/fileexchange/34464-customizable-natural-order-sort

Categories

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

Products

Community Treasure Hunt

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

Start Hunting!