Effacer les filtres
Effacer les filtres

How to sort out the matrix based on 1st column?

117 vues (au cours des 30 derniers jours)
Sky Scrapper
Sky Scrapper le 30 Jan 2019
Modifié(e) : Stephen23 le 31 Jan 2019
Hello,
I have matrix, A= [ -95 0 1 0 1 0 1 0 1 1; -95 0 1 0 1 0 1 0 1 -1 ; 0 0 1 0 1 1 0 1 0 1 ; 0 0 1 0 1 1 0 1 0 -1 ; -76 0 1 1 0 0 1 0 1 1 ; -76 0 1 1 0 0 1 0 1 -1 ; 76 0 1 1 0 1 0 1 0 1 ; 76 0 1 1 0 1 0 1 0 -1 ; -76 1 0 0 1 0 1 0 1 1 ; -76 1 0 0 1 0 1 0 1 -1 ; 95 1 0 1 0 1 0 1 0 1 ; 95 1 0 1 0 1 0 1 0 -1 ];
I want to sort out the matrix in ascending order based on the 1st column but the condition is I will have to put 1st and 2nd rows together, 3rd and 4rth rows together and so on...Finally, after sorting I want to get,
B = [95 1 0 1 0 1 0 1 0 1; 95 1 0 1 0 1 0 1 0 -1; 76 0 1 1 0 1 0 1 0 1; 76 0 1 1 0 1 0 1 0 -1; 0 0 1 0 1 1 0 1 0 1; 0 0 1 0 1 1 0 1 0 -1; -76 0 1 1 0 0 1 0 1 1; -76 0 1 1 0 0 1 0 1 -1; -76 1 0 0 1 0 1 0 1 1 ;-76 1 0 0 1 0 1 0 1 -1; -95 0 1 0 1 0 1 0 1 1; -95 0 1 0 1 0 1 0 1 -1];
Look, in matrix A we have the value '-76' was repeated 4 times in 5th, 6th, 9th and 10 th rows. My condition is after 5th row, there must be 6th row. Also after 9th rows there must be 10 th row. The same will happen in case of other rows (e.g: for '-95' after 1st row there must be 2nd row, for '0' the after 3rd row it must be 4th row).
I find it is difficult to do. Could anyone please help me?

Réponse acceptée

Stephen23
Stephen23 le 30 Jan 2019
Modifié(e) : Stephen23 le 31 Jan 2019
"How to sort out the matrix based on 1st column?"
The sortrows function is stable, in the sense that the order of any two rows will be the same after sorting if the rows have the same sorted values. So if you sort by only the first column AND rows one and two have the same value in the first column, then they will be in the same order in the output. This makes your task easy:
>> sortrows(A,-1)
ans =
95 1 0 1 0 1 0 1 0 1
95 1 0 1 0 1 0 1 0 -1
76 0 1 1 0 1 0 1 0 1
76 0 1 1 0 1 0 1 0 -1
0 0 1 0 1 1 0 1 0 1
0 0 1 0 1 1 0 1 0 -1
-76 0 1 1 0 0 1 0 1 1
-76 0 1 1 0 0 1 0 1 -1
-76 1 0 0 1 0 1 0 1 1
-76 1 0 0 1 0 1 0 1 -1
-95 0 1 0 1 0 1 0 1 1
-95 0 1 0 1 0 1 0 1 -1
Or perhaps (based on the pattern in the tenth column):
>> sortrows(A,[-1,-10])
ans =
95 1 0 1 0 1 0 1 0 1
95 1 0 1 0 1 0 1 0 -1
76 0 1 1 0 1 0 1 0 1
76 0 1 1 0 1 0 1 0 -1
0 0 1 0 1 1 0 1 0 1
0 0 1 0 1 1 0 1 0 -1
-76 0 1 1 0 0 1 0 1 1
-76 1 0 0 1 0 1 0 1 1
-76 0 1 1 0 0 1 0 1 -1
-76 1 0 0 1 0 1 0 1 -1
-95 0 1 0 1 0 1 0 1 1
-95 0 1 0 1 0 1 0 1 -1
  1 commentaire
Sky Scrapper
Sky Scrapper le 30 Jan 2019
woww..how simpler thought to solve the problem. It's working! Thanks a lot.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by