Question: 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.

Answer: 
You can convert the strings to a vector of numbers (using [sscanf](https://www.mathworks.com/help/matlab/ref/sscanf.html)) 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);

```
I ended up solving the question by cutting the array and rearranging as follows:

```
inv = {16x1 data above}

tmpinv = inv([1, 9:16]);
tmpinv2 = inv(2:8);
inv = [tmpinv; tmpinv2];

```

However, I accepted rahnema1's answer as more robust solution.