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

Categories

0 votes
2.5k views
in Technique[技术] by (71.8m points)

matlab - Rearranging cells in a cell array

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...