Reveresing the order of columns in an array

2 vues (au cours des 30 derniers jours)
Bartosz Bagrowski
Bartosz Bagrowski le 17 Mai 2022
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]

Réponses (3)

Les Beckham
Les Beckham le 17 Mai 2022
Modifié(e) : Les Beckham le 17 Mai 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 le 17 Mai 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 commentaire
Les Beckham
Les Beckham le 17 Mai 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

Connectez-vous pour commenter.


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

Catégories

En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by