How to Swap alternate rows of a column matrix

9 views (last 30 days)
Vikas B
Vikas B on 28 Jan 2016
Edited: Stephen23 on 26 Apr 2022
I have a arbitary column matrix. Please suggest how to swap alternate rows of the matrix? For example:
A = [r1; r2; r3; r4; r5; r6]
Assume even number of rows. Expected is
A= [r2; r1; r4; r3; r6; r5]

Answers (2)

Andrei Bobrov
Andrei Bobrov on 28 Jan 2016
n = size(A,1);
k = rem(n,2);
out = A(flipud(reshape(1:n-k,2,[])),:);
if k == 1, out = [out;A(end,:)]; end

Stephen23
Stephen23 on 26 Apr 2022
Edited: Stephen23 on 26 Apr 2022
Simple approach using indexing (only works for matrices with an even-number of rows):
inp = randi(9,8,4)
inp = 8×4
7 2 2 5 9 6 5 8 9 1 6 5 1 7 7 4 6 7 8 4 7 3 1 8 3 5 5 7 2 9 1 1
out = inp([2:2:end;1:2:end],:)
out = 8×4
9 6 5 8 7 2 2 5 1 7 7 4 9 1 6 5 7 3 1 8 6 7 8 4 2 9 1 1 3 5 5 7

Categories

Community Treasure Hunt

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

Start Hunting!