JSL utilizza le funzioni Lag o Dif nell'elenco?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao gente,
Ho una lista ( lista = {1, 3, 5, 7, 5, 9, 11, 13, 10, 14, 15, 17}; ) che voglio modificare in modo che aumenti in modo monotono.Cioè, voglio valutare l'elenco in modo che qualsiasi valore corrente < valore precedente sia impostato sul valore precedente, altrimenti usa il valore corrente.In una formula JSL ha questo aspetto:
If( Dif( :Lista, 1 ) < 0,
Ritardo( :Lista, 1 ),
:Elenco
);
È possibile eseguire funzioni simili a Dif e Lag sugli elementi in una matrice?Grazie.
Ri: JSL utilizza le funzioni Lag o Dif nell'elenco?Grazie MS e PMroz per due modi interessanti di pensare e giocare con le matrici.
Ri: JSL utilizza le funzioni Lag o Dif nell'elenco?Le matrici sono divertenti! I loop possono spesso essere evitati se si sfruttano le operazioni di matrice in jsl.
un = [ 1 , 3 , 5 , 7 , 5 , 9 , 11 , 13 , 10 , 14 , 15 , 17 ] ;
n = Riga N ( un ) ;
pos = Loc ( un [ 1 :: n - 1 ] > un [ 2 :: n ] ) ;
un [ pos + 1 ] = un [ pos ] ;
Mostrare ( un ) ;
Ri: JSL utilizza le funzioni Lag o Dif nell'elenco?Ah ok.Allora vuoi questo:
un = [ 1 , 3 , 5 , 7 , 5 , 9 , 11 , 13 , 10 , 14 , 15 , 17 ] ;
per ( io = 2 , io <= nrow ( un ) , io ++,
Se ( un [ io ] < un [ io - 1 ] ,
un [ io ] = un [ io - 1 ] ;
) ;
) ;
[1, 3, 5, 7, 7, 9, 11, 13, 13, 14, 15, 17]
Ri: JSL utilizza le funzioni Lag o Dif nell'elenco?Grazie PMroz,
Ho bisogno che l'elenco rimanga nell'ordine corrente, basta cambiare il valore corrente con il valore precedente se è inferiore al valore precedente.Quello che sto cercando di produrre è:
un = [ 1 , 3 , 5 , 7 , 7 , 9 , 11 , 13 , 13 , 14 , 15 , 17 ] ;
da
un = [ 1 , 3 , 5 , 7 , 5 , 9 , 11 , 13 , 10 , 14 , 15 , 17 ] ;
Ri: JSL utilizza le funzioni Lag o Dif nell'elenco?Non credo che ci siano funzioni DIF e LAG per una matrice, ma in realtà non ne hai bisogno.Puoi eseguire il loop sulla tua lista/matrice e fare riferimento (i-1) o (i+1), dove i è il tuo indice di loop.
A proposito, non lo userei elenco come variabile, in quanto è una funzione in JSL.
Oppure puoi semplicemente ordinare la tua matrice:
un = [ 1 , 3 , 5 , 7 , 5 , 9 , 11 , 13 , 10 , 14 , 15 , 17 ] ;
b = ordine crescente ( un ) ;
[1, 3, 5, 5, 7, 9, 10, 11, 13, 14, 15, 17]