Reveresing the order of columns in an array

4 views (last 30 days)
Hi guys,
I would like to write a code to reverse the columns order as in a following example:
q=[1 2 3 4, 5 6 7 8, 9 10 11 12, 13 14 15 16, 17 18 19 20];
for example, the program randomly picks:
i1=2
i2=4
so we want to rearrange the order of colums from the second till the forth one and as an output get
qnew=[1 4 3 2, 5 8 7 6, 9 12 11 10, 13 16 15 14, 17 20 19 18]

Answers (3)

Les Beckham
Les Beckham on 17 May 2022
Edited: Les Beckham on 17 May 2022
% Note: use semicolons instead of commas for row breaks so you get 4 columns
q = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16; 17 18 19 20]
q = 5×4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
i1=2;
i2=4;
qnew = q;
qnew(:,i1) = q(:,i2);
qnew(:,i2) = q(:,i1);
disp(qnew)
1 4 3 2 5 8 7 6 9 12 11 10 13 16 15 14 17 20 19 18

Bartosz Bagrowski
Bartosz Bagrowski on 17 May 2022
I meant changing the order of the columns in such a way:
q=[1 2; 3 4; 5 6; 7 8; 9 10; 11 12]
i1=2
i2=6
qnew=[1 2; 11 12; 9 10; 7 8; 5 6; 3 4]
so we reverse the order of columns from the second one till the sixth one
  1 Comment
Les Beckham
Les Beckham on 17 May 2022
Well, that is a different question. This q only has two columns. It appears that now you want to swap the rows.
q=[1 2; 3 4; 5 6; 7 8; 9 10; 11 12]
q = 6×2
1 2 3 4 5 6 7 8 9 10 11 12
i1=2;
i2=6;
qnew = q;
qnew(i1,:) = q(i2,:);
qnew(i2,:) = q(i1,:);
disp(qnew)
1 2 11 12 5 6 7 8 9 10 3 4

Sign in to comment.


Torsten
Torsten on 17 May 2022
A = [1 2; 3 4; 5 6; 7 8; 9 10; 11 12];
perm = [1 6 5 4 3 2];
A = A(perm,:)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!