Info

# reorder the data array for the least distance

1 view (last 30 days)
Feng on 29 Aug 2018
Closed: MATLAB Answer Bot on 20 Aug 2021
I have a data array
a =
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Which I converted into a two column data array by picking up all the ones using
CC = bwconncomp(a)
data = regionprops(CC, 'PixelList')
The new data is organized by rows, e.g.,
3 1
3 2
3 8
3 9
4 1
4 2
4 8
4 9
.....
I would like to reorganize it like
3 1
3 2
4 1
4 2
.....
3 8
3 9
4 8
4 9
.....
so the connected points are next to each other. Any idea on how to achieve this?
Thanks!

Stephen23 on 29 Aug 2018
Edited: Stephen23 on 29 Aug 2018
You can easily use sortrows to get a very similar sequence, which keeps the connected points together, as you requested:
sortrows(data,[2,1])