Sorting the elements of a matrix, Part 3

Suppose I have a matrix A. I want to define a matrix B where, for each row, taking entries in the first column and the second column, sort entries so that the entry in the first col will be higher than the one in the second column, and for the entries in the third and the fourth column, conduct the same operation.
For example, for
A=[1 2 3 4; 5 6 7 8]
we should have
B=[2 1 4 3; 6 5 8 7]
But I need to make it work for an arbitrary (even columns) matrix.

2 commentaires

Star Strider
Star Strider le 15 Avr 2018
Note: The original Question was a (2x2) matrix. The (2x4) matrix is new.
alpedhuez
alpedhuez le 15 Avr 2018
Modifié(e) : alpedhuez le 15 Avr 2018
I meant an arbitrary size of a matrix.

Connectez-vous pour commenter.

 Réponse acceptée

Jan
Jan le 15 Avr 2018
Modifié(e) : Jan le 15 Avr 2018
If you want the sorting on 2x2 sub-matrices, create 2x2 sub-matrices at first:
AA = reshape(A, 2, 2, 2);
BB = sort(AA, 2, 'descend');
B = reshape(BB, 2, 4)

3 commentaires

alpedhuez
alpedhuez le 16 Avr 2018
why 2*2?
Jan
Jan le 16 Avr 2018
Because it give the result you have mentioned. You want to sort the first 2 columns rowwise, and the second two columns rowwise. Therefore reshape creates block matrices with the wanted size at first.
alpedhuez
alpedhuez le 16 Avr 2018
Thank you.

Connectez-vous pour commenter.

Plus de réponses (1)

Geoff Hayes
Geoff Hayes le 15 Avr 2018
alpedhuez - if you want to sort the rows in descending order, then try
B = sort(A,2,'descend')
See sort for details.

1 commentaire

alpedhuez
alpedhuez le 15 Avr 2018
Modifié(e) : alpedhuez le 21 Avr 2018
No. There are multiple columns.
A=[1 2 3 4;5 6 7 8]
Then
B=[2 1 4 3;6 5 8 7];

Connectez-vous pour commenter.

Catégories

Produits

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by