How to Swap alternate rows of a column matrix

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)

n = size(A,1);
k = rem(n,2);
out = A(flipud(reshape(1:n-k,2,[])),:);
if k == 1, out = [out;A(end,:)]; end
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

Asked:

on 28 Jan 2016

Edited:

on 26 Apr 2022

Community Treasure Hunt

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

Start Hunting!