How to rearrange rows in specific intervals
Show older comments
I have a matrix like so:
[x1 y1 z1;
x2 y2 z2;
x3 y3 z3;
x1 y1 z1;
x2 y2 z2;
x3 y3 z3;
x1 y1 z1;
x2 y2 z2;
x3 y3 z3]
Is there a non-loop solution to reorder the matrix to:
[x1 y1 z1;
x1 y1 z1;
x1 y1 z1;
x2 y2 z2;
x2 y2 z2;
x2 y2 z2;
x3 y3 z3;
x3 y3 z3;
x3 y3 z3]
In other words get every third column (in this case) and set them in order. The final matrix would end up being the same size.
I appreciate any help possible.
Accepted Answer
More Answers (1)
KSSV
on 5 Dec 2017
A = [1 2 3 ; 4 5 6 ; 7 8 9 ; 1 2 3 ; 4 5 6 ;7 8 9 ; 1 2 3 ; 4 5 6 ; 7 8 9] ;
[val,idx] = sort(A(:,1)) ;
B = A(idx,:)
2 Comments
Alejandro
on 5 Dec 2017
Same thing works.......provided the random matrix is given in the way the matrix is.
x1 = rand ; y1 = rand ;z1 = rand ;
x2 = rand ; y2 = rand ;z2 = rand ;
x3 = rand ; y3 = rand ;z3 = rand ;
A = [x1 y1 z1; x2 y2 z2; x3 y3 z3; x1 y1 z1; x2 y2 z2; x3 y3 z3; x1 y1 z1; x2 y2 z2; x3 y3 z3] ;
[val,idx] = sort(A(:,1)) ;
B = A(idx,:)
Categories
Find more on Logical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!