Hello guys/girls
How do i swap columns??
I have this
k_minus =
-46 -43 -26 -14 7 19 11 32 39 45 45
0 -4 -7 -7 -44 -44 -7 -7 -15 -15 0
and I want the columns to be in opposite order - How do I do this? and can do this in one go?

1 commentaire

Easy way is to swap the coloums based on the positon
For example:
A=[10 20 30;
40 50 60];
swap the coloum 1 to 2 can be done by
A(:,[2 1 3])
ans =
20 10 30
50 40 60
Exact approach can be adopted ot swap rows
A([2 1],:)
ans =
40 50 60
10 20 30
I think, this can be easy way with minium code.
Enjoy :)

Connectez-vous pour commenter.

 Réponse acceptée

Thomas
Thomas le 25 Fév 2014
Modifié(e) : Thomas le 25 Fév 2014

2 votes

You could also use
out= fliplr(k_minus)

Plus de réponses (2)

Mischa Kim
Mischa Kim le 25 Fév 2014
Modifié(e) : Mischa Kim le 25 Fév 2014

1 vote

Use
k_minus_rev = k_minus(:, [length(k_minus(1,:)):-1:1])

4 commentaires

Rasmus
Rasmus le 25 Fév 2014
It totally works, is it possible for you to explain in details what it is that you do?
Mischa Kim
Mischa Kim le 25 Fév 2014
Basically, when you do
k_minus(:,1)
you extract the sub-matrix consisting of all rows in the first column. With
k_minus(:,[2,1])
you extract all rows of the second, and the first columns, in that order. You can now generalize the last bit
[length(k_minus(1,:)):-1:1]
to extract all columns ( length(k_minus(1,:)) ), placing the last column first, and the first column last, in descending order ( -1 ).
Jos (10584)
Jos (10584) le 25 Fév 2014
You do not need the length statement by using the keyword END:
MyMatrix_withReversedColumns = MyMatrix(:,end:-1:1)
but I do suggest you stick to FLIPLR. It is the same, but much easier to read!
kk
kk le 2 Avr 2019
Thank you for this answer! It has helped me "merge" two matrices, i.e. creating a matrix consisting of the first column of matrix A, first column of matrix B, second column of matrix A, second column of matrix B, etc.

Connectez-vous pour commenter.

rishabh gupta
rishabh gupta le 12 Jan 2018

0 votes

you can also use: k_minus_rev = k_minus(:, [length(k_minus):-1:1])

2 commentaires

Stephen23
Stephen23 le 12 Jan 2018
Modifié(e) : Stephen23 le 12 Jan 2018
The square brackets are totally superfluous, and using end is simpler than using length (of course length should be avoided generally because its output changes depending on the input array size: better to use numel or size with a specific dimension).
So a better (simpler, clearer, less buggy) is exactly as Jos already gave four years ago:
k_minus(:,end:-1:1)
Helen Joan
Helen Joan le 30 Avr 2019
is it possible to do this with a loop?

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by