Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a 16x1 cell array which I would like to rearrange:

{'T1' }
{'T10'}
{'T11'}
{'T12'}
{'T13'}
{'T14'}
{'T15'}
{'T16'}
{'T2' }
{'T3' }
{'T4' }
{'T5' }
{'T6' }
{'T7' }
{'T8' }
{'T9' }

How can I rearrange this to maintain the 16x1 structure, but sorted as

{'T1' }
{'T2' }
{'T3' }
{'T4' }
{'T5' }
{'T6' }
{'T7' }
{'T8' }
{'T9' }
{'T10'}
{'T11'}
{'T12'}
{'T13'}
{'T14'}
{'T15'}
{'T16'}

Thanks for your time.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
2.5k views
Welcome To Ask or Share your Answers For Others

1 Answer

You can convert the strings to a vector of numbers (using sscanf) and use the indexes of the sorted numbers to rearrange the original cell array A:

[~, idx] = sort(sscanf([A{:}], 'T%d', numel(A)));
B = A(idx);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...