On 2012-11-10 16:39, Samuel Gougeon wrote:
--------------------
Le 10/11/2012 15:06, Paul Carrico a écrit :

D= [

10 3 11 10 13;

49 6 -1 -1 0;

178 39 9 -451 3;

10110 -12 1 -9 45 ;

-13514 15 78 -99 3]

/// each line is sorted from the 1rst column (in increasing order)/

D_expeted= [

-13514 15 78 -99 3;

10 3 11 10 13;

49 6 -1 -1 0;

10110 -12 1 -9 45;

178 39 9 -451 3;

]

gsort(D,"lr","i")

will do it.

But if you want to sort only according to the first column (or certain columns) and keep the original order independently of the other columns (which I often need), you have to do it in two steps:

-->A=[3 4 1; 3 3 2; 2 2 3; 1 1 4]
 A  =
    3.    4.    1.
    3.    3.    2.
    2.    2.    3.
    1.    1.    4.
1. Sort only the first column and get the sort order (with "lr" as the second argument, you can use a vector of several columns for the second index of A):
-->[B,k]=gsort(A(:,1),"lr","i")
 k  =
    4.
    3.
    1.
    2.
2. Rearrange the rows with k:
-->A=A(k,:)
 ans  =
    1.    1.    4.
    2.    2.    3.
    3.    4.    1.
    3.    3.    2.
Note the original order of the last two rows, contrary to
-->gsort(A,"lr","i")
 ans  =
    1.    1.    4.
    2.    2.    3.
    3.    3.    2.
    3.    4.    1.

Stefan


_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to