Sorting cell arrays with characters and numbers

8 次查看(过去 30 天)
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?

采纳的回答

Stephen23
Stephen23 2022-10-30
编辑:Stephen23 2022-10-30
"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'}

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by