GDL (GNU Data Language)
P
er entrare in ambiente GDL, digitare gdl per uscire digitare exit.I comandi possono essere impartiti in sequenza oppure (quando la sequenza sarebbe troppo lunga) all'interno di una procedura (un file che contiene la sequenza di comandi).
Entrati in GDL compare il prompt GDL>
Esempi
GDL> a=1 definisco una variabile a di valore 1 GDL>print,a chiedo il valore di a
GDL>help, a oltre a scrivere il valore di a mi dice che tipo di variabile e'.
GDL> b=[4,5,6] definisco un vettore b con 3 componenti GDL>print, b chiedo il valore di b
GDL>print,a,b chiedo i valori di a e di b
I comandi in linea possono essere dati in sequnza ma separati da una &
GDL>a=1 & print,a & help,a
Possiamo fare operazioni per esempio
GDL> a=3*2^4+10 mi definisce per un valore che risulta dalla serie di operazioni appena definita.
Se voglio solo il risultato dell'operazione (non mi interessa salvarlo in una variabile) digito direttamente
GDL>print,3*2^4+10 ATTENZIONE:
GDL>print,1/2 mi da ZERO.
La ragione è che sia 1 sia 2 sono definiti “implicitamente” come interi pertanto anche il loro quoziente e' un intero
Per avere il valore “giusto” mi basta aggiungere un . (punto) a 1 o a 2 GDL>print,1./2 oppure GDL>print,1/2.
Posso definire un vettore contenente 10 valori (tutti uguali a zero) coi seguenti comandi:
GDL> a=intarr(10) GDL> b=fltarr(10)
Qual'e' la differenza fra a e b ?
Particolarmente utile (per i plot) è l'utilizzo dell'istruzione FINDGEN Provate
GDL> x=findgen(100) cosa ha fatto?
Utilizzando findgen generate i plot delle seguenti funzioni a) y= 3X
b) y = x^2+ 4
c) y = e^x ---> e^x in GDL e' exp(x)
Per plottare dare il comando GDL>plot,x,y,psym=3
(provate anche per diversi valori di psym (da 1 a 9), provate anche a vedere cosa succede se non mettete psym)
Se vogliamo un plot delle 3 funzioni precedenti per valori di x compresi fra 1 e 10 ma con migliore campionatura (ossia con distanza fra i punti + piccola) come possiamo fare?
Utilizzando opportunamente findgen producede un plot delle funzioni seno e coseno.
Immaginiamo di avere 10 misure di magnitudine apparente (nella banda B) di una stella:
10.12 10.43 10.21 10.04 10.31 10.37 10.55 10.19 10.22 10.64 10.13
Trovare media deviazione standard e mediana.
Media ---> mean(a)
deviazione standard ---> stddev(a) mediana ---> median(a)
Siamo sicuri che i comandi abbiano funzionato bene? In particolare siamo sicuri che il median abbia funzionato bene??
Come possiamo verificarlo ??
Esiste il modo di ordinare un vettore in GDL GDL>print,sort(a) --> cosa ha fatto?
GDL> print,a[sort(a)] ---> ecco il vettore ordinato
Supponiamo che una delle misure di magnitudine fosse molto diversa dalle altre esempio sostituiamo la 10.64 con 11.00 . Abbiamo una motivazione valida per eliminarla? Quale ? Abbiamo un modo per identificare la misura che discorda??
Torniamo ai dati originali. Supponendo che le nostre misure non siano affette da errori sistematici con cosa possiamo paragonare il nostro risultato.
Identificare la distribuzione con cui dobbiamo confrontarci e confrontare in forma grafica i nostri dati con essa.