# How to rearrange the rows of a matrix so the column values loop

2 views (last 30 days)

Show older comments

I have a matrix

rec =

[ 0 0

0 0.4

0.2 0

1.0 0.4

1.0 0.9 ]

I want it rearranged so that it appears like so

rec_new =

[ 0.2 0

0 0

0 0.4

1.0 0.9

1.0 0.4 ]

If you take any one of these columns and concatenate it onto itself, the values loop from a minimum to a maximum. How can I get a program to automatically do this for a number of matrices? I'm not sure how to start this, so any help would be appreciated.

Ultimately, I need the pairs of points rearranged so that when they are graphed they form a polygon that does not intersect itself.

Thanks

### Accepted Answer

Angus
on 19 Jun 2013

Edited: Angus
on 19 Jun 2013

Hey that was interesting, I think this is what you want (not sure under what conditions it might fail):

rec = [0 0;0 0.4;0.2 0;1 0.4;1 0.9]

K = convhull(rec);

rec(K,:)

ans =

0 0

0.2000 0

1.0000 0.4000

1.0000 0.9000

0 0.4000

0 0

Came across this via Gift wrapping algorithm and then found convhull from there if you are interested.

It basically draws a line around the outside of the points ... kinda or something :D

Hope this does it for you,

Cheers, Angus.

### More Answers (1)

Leah
on 19 Jun 2013

##### 2 Comments

Leah
on 20 Jun 2013

### See Also

### Community Treasure Hunt

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

Start Hunting!