JSL utilise les fonctions Lag ou Dif dans la liste ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut les gens,
J'ai une liste ( list = {1, 3, 5, 7, 5, 9, 11, 13, 10, 14, 15, 17}; ) que je veux modifier pour qu'elle augmente de manière monotone.Autrement dit, je veux évaluer la liste afin que toute valeur actuelle < valeur précédente soit définie sur la valeur précédente, sinon, utilisez la valeur actuelle.Dans une formule JSL, cela ressemble à ceci :
Si( Dif( :Liste, 1 ) < 0,
Décalage( :Liste, 1 ),
:Liste
);
Est-il possible d'effectuer des fonctions de type Dif et Lag sur des éléments d'une matrice ?Merci.
Re : JSL utilise les fonctions Lag ou Dif dans la liste ?Merci MS et PMroz pour deux façons intéressantes de penser et de jouer avec les matrices.
Re : JSL utilise les fonctions Lag ou Dif dans la liste ?Les matrices sont amusantes! Les boucles peuvent souvent être évitées si vous tirez parti des opérations matricielles dans jsl.
un = [ 1 , 3 , 5 , sept , 5 , 9 , 11 , 13 , dix , 14 , 15 , 17 ] ;
n = N rangée ( un ) ;
position = Loc ( un [ 1 :: n - 1 ] > un [ 2 :: n ] ) ;
un [ position + 1 ] = un [ position ] ;
Spectacle ( un ) ;
Re : JSL utilise les fonctions Lag ou Dif dans la liste ?Ah ok.Alors tu veux ça :
un = [ 1 , 3 , 5 , sept , 5 , 9 , 11 , 13 , dix , 14 , 15 , 17 ] ;
pour ( je = 2 , je <= nrows ( un ) , je ++,
si ( un [ je ] < un [ je - 1 ] ,
un [ je ] = un [ je - 1 ] ;
) ;
) ;
[1, 3, 5, 7, 7, 9, 11, 13, 13, 14, 15, 17]
Re : JSL utilise les fonctions Lag ou Dif dans la liste ?Merci PMroz,
J'ai besoin que la liste reste dans l'ordre actuel, remplacez simplement la valeur actuelle par la valeur précédente si elle est inférieure à la valeur précédente.Ce que je cherche à produire c'est :
un = [ 1 , 3 , 5 , sept , sept , 9 , 11 , 13 , 13 , 14 , 15 , 17 ] ;
de
un = [ 1 , 3 , 5 , sept , 5 , 9 , 11 , 13 , dix , 14 , 15 , 17 ] ;
Re : JSL utilise les fonctions Lag ou Dif dans la liste ?Je ne crois pas qu'il existe des fonctions DIF et LAG pour une matrice, mais vous n'en avez vraiment pas besoin.Vous pouvez boucler sur votre liste/matrice et référencer (i-1) ou (i+1), où i est votre index de bouclage.
BTW je n'utiliserais pas liste en tant que variable, car il s'agit d'une fonction dans JSL.
Ou, vous pouvez simplement trier votre matrice :
un = [ 1 , 3 , 5 , sept , 5 , 9 , 11 , 13 , dix , 14 , 15 , 17 ] ;
b = Trier par ordre croissant ( un ) ;
[1, 3, 5, 5, 7, 9, 10, 11, 13, 14, 15, 17]