Title: Matlab: grafici ed altro
1Matlab grafici ed altro
- Edmondo Giovannozzi
- ENEA C.R. Frascati
2Outline
- Esempio per stuzzicare lappetito
- Introduzione a Matlab
- Lettura dati di FTU
- Grafica in Matlab
- Esempi
3Esempio (1) per stuzzicare lappetito
- Esempio per stuzzicare l'appetito
- shot 18598
- te ftudatav(shot,'e.ecmtmax')
- ne ftudatav(shot,'co2dens')/1e20
- ne ne01.5
- pe tene
- hf figure(1) hf e' uguale ad 1
- set(hf,'color','white')
- set(hf,DefaultAxesFontSize',12)
- subplot(3,1,1)
- plot(te)
- ylabel('T_e (keV)')
- title('Shot ' num2str(shot))
- subplot(3,1,2)
- plot(ne)
- ylim(max(0,ylim))
subplot(3,1,3) plot(pe) ylim(max(0,ylim)) ylabel('
p_e (keV 1020m-3)') xlabel('t
(s)') joinaxes
4Per iniziare
- Creare una directory
- HOME/matlab
- File di startup eseguito allinizio
- HOME/matlab/startup.m
- (copiare da giovan/fus/general/corsoMatlab)
- Directory matlab FTU
- DASROOT/matlab
- Esempi in
- giovan/fus/general/corsoMatlab
5Per iniziare
- Per iniziare
- ltgiovan_at_efrs05 gt matlab
- Per uscire
- gtgt exit
- Help
- gtgt help ltnome comandogt
- Esempio
- gtgt help plot
- Informazioni sulle variabili presenti in memoria
- gtgt whos
- Le variabili di base sono le matrici di numeri
reali, ma ci sono anche le matrici logiche, le
stringhe, gli array di celle e le strutture. - Per eseguire comandi di sistema
- gtgt ! ltcomando unixgt
- gtgt s,w unix(ltcomando unixgt)
Attenzione! In Matlab come in Unix le maiuscole e
le minuscole sono distinte. Tutti i comandi e le
funzioni standard sono in minuscolo.
Nella stringa w il risultato del comando.
6Help
Struttura dellhelp
Guida alluso
help di base
Guida di riferimento
funzioni di fit avanzato
filtraggio segnali etc.
spline
Statistica
Tutte le proprietà grafiche
7Matrici reali
- gtgt a 1, 2, 3, 4 vettore orizzontale di
numeri reali - gtgt b 1 2 3 4 vettore verticale di
numeri reali - gtgt c 1,2,3 4,5,6 matrice 2x3 di numeri
reali - c
- 1 2 3
- 4 5 6
- gtgt whos
- Name Size Bytes Class
- a 1x4 32 double array
- b 4x1 32 double array
- c 2x3 32 double array
- gtgt clear per cancellare le variabili create
Attenzione come in FORTRAN le matrici sono
memorizzate per colonne
c
1 4 2 5 3 6
8Creazione Matrici reali
- gtgt a ones(2,3) matrice 2x3 piena di 1
- gtgt b zeros(3,2) matrice 3x2 piena di 0
- gtgt c 00.42 vettore di reali tra 0 e 2 a
passi di 0.4 - c
- 0 0.4000 0.8000 1.2000
1.6000 2.0000 - gtgt d c vettore colonna trasposto di c
- gtgt whos
- Name Size Bytes Class
- a 2x3 48 double array
- b 3x2 48 double array
- c 1x6 48 double array
- d 6x1 48 double array
- Grand total is 24 elements using 192 bytes
9Indici
- gtgt a 1,2,3 4,5,6
- a
- 1 2 3
- 4 5 6
Selezione del 5 elemento in memoria gtgt a(5) ans
3
Indici k lelemento k-esimo. kh dallelemento k
a quello h. kdh come sopra a passi di
d. kend dallelemento k alla fine. kend-1 dalle
lemento k al penultimo tutti gli elementi di
quella dimensione. a con a vettore di indici, gli
elementi corrispondente allindice. b con b
vettore logico, gli elementi per cui b è 1.
Tutti gli elementi gtgt a() ans 1 4 2 5
3 6
Selezione di un singolo elemento gtgt a(2,3) ans
6
Selezione di una colonna gtgt a(,2) ans 2
5
10Operatori (1)
- Molti operatori lavorano elemento per elemento
- gtgt a 1,2,3
- gtgt b 4,5,6
- gtgt a b
- ans 5 7 9
- Così anche molte funzioni elementari
- gtgt y sin(00.42)
- y
- 0 0.3894 0.7174 0.9320
0.9996 0.9093
11Operatori (2)
- Gli operatori matematici , / , , \
sono matriciali, i corrispondenti operatori che
operano elemento per elemento sono ., ./,
. , .\. - Loperatore \ risolve il sistema di equazioni
matriciale AX B , X A\B. - Attenzione
- gtgt a 1 2 3
- gtgt 1 / a
- ans
- 0 0 0.3333
Loperazione matematica è definita, anche se
molto spesso non è ciò che volevamo. Per avere
linverso del vettore, elemento per elemento
dovevamo scrivere gtgt 1 ./ a
12Numeri complessi
- I numeri complessi sono gestiti automaticamente
in Matlab - gtgt a log(-2)
- a 0.6931 3.1416i
- gtgt a (3 2i) 3j
- ans 3.6931 8.1416i
- gtgt b complex(2)
- b 2
- gtgt isreal(b)
- ans 0
- gtgt imag(b)
- ans 0
- gtgt exp(a)
- ans -2.0000 0.0000i
- gtgt imag(exp(a))
- ans 2.4493e-16
Funzioni conj complesso coniugato. real parte
reale. imag parte immaginaria. abs magnitudine. a
ngle angolo di fase in radianti. isreal test se è
un vettore reale o complesso
gtgt a 1,2i3,4i a 1 0 2i
3 0 4i gtgt a ans 1 3
0 2i 0 4i gtgt a. ans 1
3 0 2i 0 4i
Attenzione, loperatore calcola la matrice
, usare loperatore . per la semplice
trasposizione
13Array e operatori logici
- gtgt a 10, 20, 30, 40, 50, 60
- gtgt b a gt 30
- b
- 0 0 0 1 1 1
- gtgt whos
- Name Size Bytes Class
- a 1x6 48 double array
- b 1x6 48 double array
(logical) - gtgt a(b)
- ans
- 40 50 60
- gtgt id find(B)
- id
- 4 5 6
- gtgt a(id)
- ans
- 40 50 60
Operatori di comparazione uguale a diverso
da gt, lt maggiore, minore gt, lt maggiore uguale,
minore uguale
Operatori e funzioni logiche and logico or
logico not logico xor or esclusivo
(funzione) any vero se qualche elemento di un
vettore è diverso da zero o è vero
(funzione). all vero se tutti gli elementi di un
vettore sono diverso da zero o sono veri
(funzione).
14Stringhe
Per maggiori informazioni gtgt help strfun gtgt help
strings
- Le stringhe sono vettori riga di caratteri
- gtgt sa pluto pippo
- sa
- pluto
- pippo
- gtgt whos
- Name Size Bytes Class
- sa 2x5 10 char array
- Attenzione in memoria sono memorizzate per
colonne - gtgt sa()
- ans
- ppliuptpoo
Principali funzioni ischar test se un vettore è
una stringa. strcmp compara due
stringhe. findstr trova una stringa allinterno
di unaltra strtok separa una stringa in token
(uno per volta) (strmtok) trova tutti i token di
una stringa (scritta a Frascati). num2str trasform
a un numero in una stringsa. str2double trasforma
una stringa in un numero. sprintf Output su una
stringa. (vedi I/O) sscanf Input da una stringa.
(vedi I/O)
15Array di celle
array di celle può contenere oggetti di diversa
natura. Si creano con le parentesi graffe.
- gtgt a 1, Ciao, 1,2,3
- a
- 1 'Ciao' 1x3 double
- gtgt b a(2)
- gtgt c a2
- gtgt whos
- Name Size Bytes Class
- a 1x3 400 cell array
- b 1x1 128 cell array
- c 1x4 8 char array
- gtgt st pippo,pluto,topolino
è ancora un array di celle composto di una sola
cella.
è lelemento nella cella
Per inserire un elemento in un array di celle
preesistente gtgt a(2) FTU gtgt a2 FTU
gtgt a(23) FTU,123 gtgt a23 ??
errato
specialmente utile con stringhe di diversa
lunghezza
16Strutture
- gtgt a.x 1
- gtgt a.y 1,2,3
- gtgt a.s Ciao
- a
- x 1
- y 1 2 3
- s 'Ciao
- gtgt a(2).x pluto
- a
- 1x2 struct array with fields
- x
- y
- s
- gtgt a(1).y
- ans
- 1 2 3
Ununica variabile a è composta di diversi campi
(x, y, s nellesempio), che possono essere
variabili di qualsiasi tipo.
Si può avere un array di strutture.
Stessa sintassi per leggere il valore di un campo
17Funzioni matematiche
- gtgt pi
- ans 3.1416
- gtgt atan2(3,4)
- ans 0.6435
- gtgt round(3.6)
- ans 4
- gtgt floor(3.6)
- ans 3
- gtgt mod(13,5)
- ans 3
- gtgt 1/0
- ans Inf
- gtgt eps
- ans 2.2204e-16
Tutte le principali funzioni trigonometriche ed
esponenziali acos, acosh, acot, acoth, acsc,
acsch, asec, asech, asin, asinh, atan, atanh,
atan2, cos, cosh, cot, coth, csc, csch, exp, log,
log2, log10, sec, sech, sin, sinh, tan, tanh,
E quelle più specialistiche airy, besselh,
besseli, besselj, besselkm, bessely, beta,
betainc, betaln, ellipj, ellipke, erf, erfc,
erfcinv, erfcx, erfinv, expint, gamma, gammainc,
gammaln, legendre, psi,
Costanti principali pi pi greco i,j unità
immaginaria eps Accuratezza relativa di un
numero reale Inf Infinito NaN Not-a-Number
18Funzioni di analisi
Principali funzioni di analisi max, min massimo,
minimo di una matrice sum somma degli
elementi mean, std media, deviazione
standard median mediana trapz integrazione
numerica trapezoidale Se applicati ad una matrice
lavorano sulla prima dimensione, che diventa
unitaria.
- gtgt a 1,2,4
- gtgt mean(a)
- ans 2.3333
- gtgt a 1,2 3,4 6,8
- a 1 2
- 3 4
- 6 8
- gtgt mean(a)
- ans 3.3333 4.6667
- gtgt diff(a)
- ans 2 2
- 3 4
- gtgt cumtrapz(10,20,30,a)
- ans 0 0
- 20 30
- 65 90
Funzioni cumulative cumsum somma
cumulativa cumtrapz integrale trapezoidale
cumulativo
Altre sort ordina un vettore diff differenza
numerica gradient gradiente (attenzione!! non
opera per colonne) fft FFT filter filtro numerico
19Input Output
- gtgt a 1,2,3
- gtgt b Ciao
- gtgt save prova
- gtgt clear
- gtgt load prova
- gtgt c load(prova)
- c a 1 2 3
- b Ciao
- gtgt whos
- Name Size Bytes Class
- a 1x3 24 double array
- b 1x4 8 char array
- c 1x1 176 struct array
- gtgt a 1,2,3 4,5,6
- gtgt save pluto a ascii
- gtgt type pluto
- 1.0000e00 2.0000e00 3.0000e00
- 4.0000e00 5.0000e00 6.0000e00
Per salvare dei dati e recuperarli usare le
funzioni save e load. i dati vengono scritti in
binario in un file .mat gtgt save nomefile
variabile1 variabile2 gtgt load nomefile gtgt var
load(nomefile) Nellultimo caso le variabili
vengono memorizzate come membri in una struttura,
con lopzione ascii si scrivono e si leggono in
formato ascii (usare solo con singole matrici).
gtgt fid fopen(pippo,w) gtgt fprintf(fid,Ciao
f,3.5) gtgt fclose(fid) gtgt type pippo Ciao
3.500000 gtgt fprintf(Ciao Ciao) Ciao Ciao gtgt a
sprintf(Ciao) a Ciao
Senza lindicazione del file scrive sullo schermo
20Lettura di un file di testo
- gtgt type pluto
- 1.0000e00 2.0000e00 3.0000e00
- 4.0000e00 5.0000e00 6.0000e00
- gtgt a load(pluto)
- a 1 2 3
- 4 5 6
- gtgt type esempio.vs
- File versus di esempio
- V tempo te ne
- .data
- 0.1 1.1 2.2
- 0.2 0.9 2.3
- 0.3 1.0 2.1
- gtgt a vsread(esempio.vs)
- a tempo 3x1 double
- te 3x1 double
- ne 3x1 double
Altri comandi di input fscanf Lettura formattata
da un file fgetl Lettura di una linea di testo da
un file input Lettura di un input
dallutente Esempio gtgt b input(Dimmi
) Dimmi 34 b 34
Lettura di un file versus solo numerico di
piccole dimensioni. Usare vs2mat per file grandi
o con variabili di tipo carattere (vedi dopo).
21Input/output formati
- Formato FORTRAN tipo
- n.mf F Virgola fissa
- n.md I Intero
- n.me E Esponenziale
- n.mg G Esponenziale/Virgola fissa
- n.mx - Esadecimale
- ns A Stringa
- La larghezza del campo è n. Contrariamente al
fortran se il numero risulta più lungo, il campo
si allunga di conseguenza senza troncare o
mettere delle stelline al posto dei numeri. Per i
formati reali (f,e,g) m è il numero di cifre dopo
la virgola. Per il formato intero (d,x) m è il
numero di cifre che deve essere scritto,
eventualmente mettendo degli zeri sulla sinistra
del numero. Si può ottenere un risultato simile
riempendo il campo con zeri anche con il seguente
formato 0nd. - Se n è negativo i numeri si allineano a sinistra.
Esempi gtgt fprintf(a6.2f,3.5) a 3.50 gtgt
fprintf(b-6.3dA,11) b011 A gtgt
fprintf(b06d,11) b000011 gtgt fprintf(Ciao
\nCiao,11) Ciao Ciao
Caratteri speciali \n New line \r Carriage
return \t Horizontal tab \\ Backslash '' Single
quotation mark Percent character
22Strutture di programmazione
if ltcondizionegt elseif ltcondizionegt else
end
switch ltvariabilegt case ltvaloregt case
ltvalore1gt, ltvalore2gt otherwise end
ltvariabilegt e ltvaloregt possono essere
unespressione il cui risultato è un
numero scalare o una stringa.
for i ltbeggtltendgt end
try catch end
Gestione dellerrore Normalmente vengono eseguite
le istruzioni tra try e catch, in caso di errore
quelle tra catch ed end.
while ltcondizionegt end
break uscita anticipata da un ciclo for o
while continue salta le rimanenti istruzioni e va
alla successiva iterazione.
23Funzioni e Script
- Il nome di una funzione o di uno script è quello
del file in cui risiede. - I nomi dei file terminano in .m
Chiamata di una funzione gtgt out1,out2,
funzione(in1,in2,) oppure gtgt funzione(in1,in2,)
I parametri in ingresso sono in1, in2, etc.
mentre out1, out2, etc. sono i parametri in
uscita. Le parentesi quadre sono opzionali se è
presente un solo parametro in uscita.
Script sequenza di comandi come se fossero
immessi da tastiera. Vedono le stesse variabili
che sono visibili allutente. Funzioni possono
avere parametri in input ed in output. La
variabili sono private e non sono più visibili
alla fine della funzione se non sono parametri
duscita.
Definizione di una funzione in un file.
Attenzione il nome della funzione è comunque
quello del file in cui risiede! function o1,o2
funzione(i1,i2) o1 o2
24Funzioni base per il plot
- gtgt x 00.810
- gtgt y1 sin(x)
- gtgt y2 cos(x)
- gtgt figure
- gtgt subplot(2,1,1)
- gtgt plot(x,y1)
- gtgt subplot(2,1,2)
- gtgt plot(x,y2,or--)
figure(n) apre una finestra grafica con il numero
n.
subplot(nr,nc,k) crea o seleziona il k-esimo
asse, assumendo che la figura sia divisa in nr
righe ed nc colonne.
plot(x,y,stile,) plot del vettore x vs y. stile
è una stringa che definisce il tipo di marker, lo
stile della linea, ed il colore. Vedere lhelp
della funzione plot per i dettagli. Nellesempio
considerato o marker circolare, r linea e
marker di colore rosso, - - linea tratteggiata.
25Lettura dati FTU ed altro
- Lettura dati FTU
- Loggetto vxy
- Scrittura canali dollaro
- Varie routine disponibili a Frascati
26Lettura dati FTU
- gtgt ip ftudatav(18598,zzzzed.ipl)
- ip
- x 1x2048 double
- y 1x2048 double
- ud 1x1 struct
- gtgt ip.ud
- ans
- shot 18598
- ch 'zzzzed.ipl'
- xl 'TIME '
- yl 'I PLASMA '
- xu 's '
- yu 'A '
- ier 0
il tempo in questo caso
Uso var ftudatav(nshot, canale) nshot può
essere un vettore di numeri di sparo, e canale
può essere un cellarray di stringhe. gtgt shots
18598,18591 gtgt ip ftudatav(shots,zzzzed.ipl
) gtgt chans e.ecmtmax,
zzzzed.vpl gtgt va ftudatav(18598,chans) va
1x2 vxy object
la corrente
il numero di sparo
Il canale appena letto
Le label e le altre informazioni
27Oggetti VXY
gtgt te ftudatav(18598,e.ecmtmax) te
x 1x296 double y 1x296 double ud
1x1 struct gtgt ip ftudatav(18598,zzzzed.ipl)
ip x 1x2048 double y 1x2048
double ud 1x1 struct gtgt a te ip a
x 1x1772 double y 1x1772 double
ud gtgt plot(a)
Non sono strutture ma oggetti. Ad esempio
loperazione corrisponde alla
routine DASROOT/matlab/_at_vxy/times.m per
ottenere il risultato si interpolano i due
vettori su una base delle x comune. Anche la
funzione plot corrisponde a DASROOT/matlab/_at_vxy/
plot.m
28Oggetti VXY creazione
- Creare oggetti VXY
- gtgt a vxy oggetto vxy vuoto
- gtgt a vxy(struttura) una struttura con un
campo x ed uno y - gtgt a vxy(xvect,yvect) due vettori della
stessa lunghezza - gtgt a vxy(xvect,formula) un vettore ed una
formula funzione di x - Esempi
- gtgt a vxy(1,2,3,4,5,6)
- gtgt bs.x 1,2,3 bs.y 4,5,6
- gtgt b vxy(bs)
- b
- x 1 2 3
- y 4 5 6
- ud
- gtgt c vxy(0.10.110,sin(x))
- c
- x 1x100 double
- y 1x100 double
- ud 'sin(x)'
Il campo ud (user data) può contenere dei dati
utente. gtgt b.ud Ciao b x 1 2 3
y 4 5 6 ud 'Ciao' gtgt b.y 7,8,9 ???
Error using gt vxy/subsasgn It is not allowed to
write to the y field gtgt dd b.y dd 4
5 6
29Oggetti VXY operatori
- Tutti gli operatori binari principali, non cè
distinzione tra quelli matriciali e non - somma
- - sottrazione
- moltiplicazione
- / divisione
- elevazione a potenza
La base delle x scelta è lunione delle due basi
x nella zona dove entrambi i dati sono
definiti. Interpolazione lineare di default, ma
può essere cambiata tramite la funzione
setinterpfun.
Tutte i valori di x1 ed x2 nellintervallo di
validità.
30Oggetti vxy metodi principali
- Le principali funzioni trigonometriche e
logaritmiche - sin, cos, etc.
- La funzione plot.
- Funzioni di calcolo
- b deriv(a) derivata di a (usa la funzione
gradient) - b integ(a) integrale di a (usa la funzione
cumtrapz) - b mea(a,dx) media mobile di a in un intervallo
2 dx, se dx è un vettore, media di a negli
intervalli dx(i), dx(i1). - Es
- gtgt plot(te, mea(te, 0.1,0.2,0.3,0.6,1.4),k')
- gtgt vline(0.1,0.2,0.3,0.6,1.4),k--)
Per altre informazioni vedere http//fusfis.frasc
ati.enea.it/Software/Unix/FTUdata/Matlab/index.htm
l
31Oggetto vxy operatore
- Loperatore in matlab è lunico operatore
ternario, ovvero può agire su tre oggetti. - b av a interpolato ai valori del vettore v (a
vxy, b vxy, v vettore). - b ac a interpolato alle ascisse di c (a vxy, b
vxy, c vxy). - b adx a interpolato a passi dx (a vxy, b vxy,
dx scalare). - b axmnxmx a ma soltanto per le ascisse
comprese tra xmn e xmx, nessuna interpolazione.
(a vxy, b vxy, xmn xmx scalari). - Attenzione loperatore ha una bassissima
priorità, mettere sempre le parentesi intorno!!!
Es - gtgt b (a0.50.8)3
Esempio gtgt plot(te, 0.5(te 0.5 1))
32Oggetti vxy campi fittizi
- Esempio
- gtgt a vxy(1,2,3,10,15,12)
- gtgt a.f(1.5)
- ans 12.5
- gtgt a.f(1.5, 1.8, 4)
- ans 12.5 14 NaN
- gtgt b vxy(4,5,6,1.5,1.8,4)
- b x4 5 6
- y1.5 1.8 4.0
- ud
- gtgt c a.f(b)
- c x 4 5 6
- y 12.5 14.0 NaN
- ud
- gtgt d a1.5,1.8,4
- d x 1.5000 1.8000
- y 12.5 14.0
- ud
Oltre ai campi x, y ed ud esiste il campo
fittizio f che permette di vedere loggetto vxy
come una funzione a.f(vect) valore di a ai
valori di vect. a.f(b) composizione funzionale.
Diverso è il comportamento delloperatore che
ritorna sempre un oggetto vxy sia pure con la
base delle x cambiata. Notare la scomparsa del
NaN.
a
av
33Oggetti vxy vettori
- Si possono avere vettori di oggetti vxy se uno
passa alla ftudatav un lista di spari o una lista
di canali. Molte delle funzioni viste in
precedenza operano su vettori di oggetti vxy - gtgt te ftudatav(18598,18591,e.ecmtmax)
- te 1x2 vxy object
- gtgt plot(te)
- Per accedere al campo fittizio f mettere ()
prima del punto - gtgt te().f(0.5)
- Ci sono due funzioni che creano dei cell array di
canali - ftuchan, e ftudaslist.
gtgt ch ftuchan(e.ecmtvt,0.93,0.97,1.0) ch
'e.ecmtvt(0.93)' 'e.ecmtvt(0.97)'
'e.ecmtvt(1)' gtgt te
ftudatav(18598,ch)
gtgt ftudaslist(18598,'zzzz')' ans
'ZZZZED.IPL' 'ZZZZED.VPL'
'ZZZZEE.DCN' 'ZZZZEE.HXR'
'ZZZZEM.IBT'
34Scrittura canali dollaro
- La funzione dbput scrive i canali dollaro. Non
esiste al momento una funzione dbget dedicata
alla lettura di canali dollaro, questi vanno
letti tramite la ftudatav. - Formato
- ier dbput(shot, channel, x, y, xlab, ylab,
xunit, yunit) - shot Numero di sparo double
- channel Canale Stringa (utente.famigliacanale)
- x Coordinate x vettore o cell Array di vettori
- y Matrix matrice multidimensionale
- xlab X label Stringa o cell Array di stringhe.
- ylab Y label Stringa.
- xunit X unità di misura Stringa o cell Array of
stringhe. - yunit Y unità di misura Stringa.
- Esempio 2D
- gtgt dbput(18598,'giovan.prprova',r,t, z,
'R0', 'tempo', 'Valore', 'm','s','P')
Matrice z (R lungo le colonne)
R
t
numero di sparo
coordinate in un cell array prima il raggio poi
il tempo
Dati in una matrice rettangolare
utente.famigliacanale
35Funzioni varie
- gtgt plot(x,y)
- gtgt vline(-1,2,4,'k--')
- gtgt hline(-0.5,0.5,'r')
36Strumenti per leggi di scala
- vs2mat trasforma file versus in file matlab
(.mat). Per file versus di grandi dimensioni e
con campi di tipo carattere. - Esempio
- ltgiovan_at_efrs10gt vs2mat esemcar.vs
-
- gtgt load esemcar
- gtgt whos
- Name Size Bytes Class
- LABEL 1x2 132 cell array
- ne 1x4 32 double array
- te 1x4 32 double array
- tok 1x4 32 double array
- gtgt tok
- tok
- 1 1 2 2
- gtgt LABEL
- LABEL
- 'FTU' 'JET
- gtgt te
- te
Per creare file versus dai dati FTU, vedere
totab. (GiovanniBracco)
(Giovanni Bracco) bracco/matlab/analisi_leggi_sc
ala.m
37Altri Esempi
Per lanalisi dei segnali E.ECPFAST gtgt ecpfastui
38Altro esempio
gtgt dayshot(23600) 11-Apr-2003 Numero di shot9
Shot iniziale 23596 Shot finale 23604
shot ora scarica durata Btor
Ipl(kA) 23596 1209 PROVA_IMP 0.00
0.00 0 23597 1218 S60M50A06I 0.00
5.88 0 23598 1236 S60M50A06I 1.73
5.92 -497 23599 1259 S60M50A06I 1.73
5.92 -491 23600 1314 S60M90A004
1.75 5.88 -887 23601 1344 S79M80LE03
1.42 7.87 -788 23602 1556 S79M80LE03
1.43 7.86 -788 23603 1621
S79M80LE03 0.00 5.77 0 23604 1643
S79M80LE03 1.40 7.87 -783
39La Grafica
- Funzioni Grafiche più complesse
- Uso degli handle
40Altre funzioni grafiche
- Per avere assi logaritmici si usano semilogx,
semilogy, loglog, I parametri sono quelli della
funzione plot - gtgt semilogy(110,exp(110))
- per fare dei grafici con le barre di errore usare
la funzione errobar - gtgt errorbar(x, y, dy, stile)
- gtgt errorbar(x, y, dyl, dyu, stile)
- Esempio
- gtgt x 19
- gtgt y sin(x)
- gtgt ye abs(rand(1,9))
- gtgt errorbar(x, y, ye, or--)
41Sovrapporre grafici
- Per sovrapporre dei grafici nello stesso asse
usare il comando hold, che permette di non
cancellare i grafici già presenti nellasse
considerato. - gtgt hold on
- gtgt hold off
- Esempio
- gtgt x 19
- gtgt y sin(x)
- gtgt ye abs(rand(1,9))
- gtgt errorbar(x, yye/2, ye, o)
- gtgt hold on
- gtgt plot(10.19,sin(10.19),k)
- gtgt hold off
Nota Il comando hold cambia la proprietà
NextPlot dellasse e della figura corrente.
42Contour plot
- Le funzioni sono contour, contourf. La funzione
contourf, si differenzia dalla contour solo
perché le curve di livello sono riempite. Uso - gtgt contour(x, y, z, nc)
- gtgt pcolor(x, y, z)
- Se nc è un numero indica il numero di contorni,
se è un vettore, i livelli a cui devono essere
disegnati i contorni. Esempio - gtgt x 1,2,3,4
- gtgt y 1,2,3
- gtgt z 4,5,6,8 6,5,5,7 7,6,5,5
- z 4 5 6 8
- 6 5 5 6
- 7 6 5 5
- gtgt whos
- Name Size Bytes Class
- x 1x4 32 double array
- y 1x3 24 double array
- z 3x4 96 double array
- gtgt contour(x,y,z,20)
Attenzione allorientamento della matrice z. La
coordinata y scorre lungo le colonne.
() x, y crescenti
43Pseudo color Plot
- La funzione pcolor ha gli stessi parametri della
contour (eccetto nc) - gtgt z
- z 4 5 6 8
- 6 5 5 6
- 7 6 5 5
- gtgt pcolor(x,y,z)
- gtgt shading flat
- Notare che solo una parte viene mostrata, perché
il colore della faccia è quello del vertice in
basso a sinistra. Il comando shading cambia il
modo in cui vengono colorate le facce. Ha 3
opzioni faceted, flat, interp. - pcolor genera una superficie tridimensionale e la
fa vedere dallalto. - gtgt shading interp
6
5
5
4
5
6
44Label, leggende, etc.
- gtgt x00.120
- gtgt plot(x,sin(x),x,cos(x))
- gtgt xlabel(Tempo)
- gtgt ylabel(Valore)
- gtgt title(Seni e Coseni)
- gtgt legend(Seno,Coseno)
- gtgt grid on
- gtgt ylim(-1.1,1.3)
- gtgt xlim
- ans
- 0 20
- gtgt axis
- ans
- 0 20.000 -1.1000 1.3000
Il comando axis permette di impostare diverse
proprietà dellasse corrente.
45Gli handle
- Ogni oggetto grafico ha assegnato un handle,
ovvero un numero reale che si riferisce a
quelloggetto. - Il numero 0 è lhandle deloggetto root che
descrive lo schermo e alcune caratteristiche
generali di matlab. - Normalmente gli handle delle figure sono numeri
interi a partire da 1. - Attenzione! Non confondere le figure (che appunto
hanno gli handle) con le finestre del sistema di
sviluppo interattivo.
molte funzioni grafiche se chiamate con dei
parametri in uscita, ritornano degli handle agli
oggetti grafici appena creati.
gtgt h figure h 1 gtgt gcf ans 1 gtgt hp
plot(1,2,1,1) hp 3.0010 gtgt gca ans
101.0009
handle della figura è un numero intero
Le due funzioni gcf Get Current Figure gca Get
Current Axes ritornano la figura e lasse corrente
handle della linea disegnata
handle del nuovo asse
46Le proprietà
- Tutti gli oggetti grafici hanno delle proprietà
(tipo lo spessore della linea od il colore per le
linee, etc.) - Gli handle servono per leggere o cambiare le
proprietà degli oggetti grafici tramite le
funzioni set e get.
gtgt h plot(110,sin(110)) h 102.0009 gtgt
get(gca,children) ans 102.0009 gtgt set(gcf,
color, yellow) gtgt set(h,
linewidth,5) gtgt set(gca,position,
0.5,0.5,0.4,0.4) gtgt set(gca,fontsize,
20) gtgt get( gcf, gca, h,'type') ans
'figure' 'axes' 'line'
47Le Proprietà (2)
- Funzioni per cambiare o leggere le proprietà
- gcf handle della figura corrente
- gca handle dellasse corrente
- set(h,Prop,Val) cambia la proprietà di h
- get(h,Prop) legge la proprietà di h
- findobj(h,Prop,Val) trova un oggetto figlio di
h con la proprietà specificata - delete(h) Cancella h
- get(h) Mostra a schermo tutte le proprietà
delloggetto h. - set(h) Mostra a schermo tutte le possibili
impostazioni delle proprietà delloggetto h.
Esempio gtgt get(1) Alphamap (1 by
64) BackingStore on CloseRequestFcn
clos Color 1 1 1 Colormap (64 by 3)
gtgt set(1) Alphamap BackingSto
re on off CloseRequestFcn string -or-
function handle -or-
cell array Color Colormap
48Gerarchia degli oggetti grafici
Ogni oggetto grafico è figlio di un solo genitore
e può avere più di un figlio. Due proprietà
descrivono le relazioni di parentela Children vet
tore con gli handle degli oggetti
figli. Parent handle delloggetto
genitore. Loggetto root non ha genitori. Image,
Light, Line, Patch, Rectangle, Surface, Text non
hanno figli
49Esempi
Patch
Surface
Rectangle
Text
3D Surface
50Le principali proprietà comuni
- Comuni a tutti
- Type Tipo di oggetto grafico
- Tag Stringa con un nome per loggetto. Può non
essere specificato. - Visible on off, indica se loggetto è visibile
oppure no. - Parent Handle del genitore. Tranne loggetto
root. - Children Vettore di handle degli oggetti figli.
Ritorna per gli oggetti che non hanno figli. - Clipping on off, per gli oggetti figli degli
assi specifica se sono visibili solo allinterno
dellasse genitore.
- Proprietà comuni a molti oggetti descritte nel
seguito - Posizione
- Colore
- Assi
- Testi
Clipping on
Clipping off
51Posizione
Comuni a figure, axes, uicontrol, text,
rectangle. Units Unità di misura pixels,
normalized, inches, centimeters, points,
characters, data (solo per loggetto text).
Loggetto rectangle non ha questa
proprietà. Position vettore di 4 componenti
Left, Bottom, Width, Height (vettore di 3
componenti per loggetto text, vedere in seguito).
Unità di misura normalized da 0 a 1. Punto (0,0)
in basso a sinistra, (1,1) in alto a
destra. characters larghezza della lettera x,
altezza pari a quella tra due linee di testo.
La posizione degli altri oggetti è specificata
rispetto agli assi nelle unità data. Proprietà
XData, YData, ZData
52Colore
Colormap
R
G
B
Colore
indice
RGB Nomi corti Nomi lunghi
1 1 0 y yellow
1 0 1 m magenta
0 1 1 c cyan
1 0 0 r red
0 1 0 g green
0 0 1 b blue
1 1 1 w white
0 0 0 k black
53Colormap
- gtgt pcolor(magic(4))
- gtgt shading interp
- gtgt colorbar
- gtgt colormap(jet)
- gtgt colormap(gray)
- gtgt jet
- ans
- 0 0 0.5625
- 0 0 0.6250
- ...
- 0 1.0000 1.0000
- 0.0625 1.0000 1.0000
- ...
- 0.6250 0 0
- 0.5625 0 0
Matrice nx3
54Proprietà di un asse
gtgt plot(14,101040) gtgt set(gca,Xgrid,on) gtgt
set(gca,XMinorTick,on) gtgt set(gca,XTickLabel
, uno,due,tre,quattro) gtgt
set(gca,YTick,17,27,37) gtgt set(gca,FontSize,
12) gtgt get(gca,XLim) ans 1 4
YTick
XGrid
Le funzioni axis, xlim, ylim permetto comunque di
impostare molte delle proprietà degli assi.
XMinorTick
XTickLabel
55Text
Si aggiunge del testo ad un grafico con le
funzione xlabel, ylabel, title, oppure con la
funzione text. La posizione è specificata con un
vettore di due o tre numeri. Leffettiva
posizione del testo è data dalla proprietà
extent. Le proprietà HorizontalAlignment e
VerticalAlignment influenzano la posizione
dellextent.
gtgt plot(x,y) gtgt h text(0.3,0.5,'Ciao!
Argh!','fontsize',24) gtgt line(0.3,0.5,'Marker','
','Color','r') gtgt rectangle('pos',get(h,'Extent'))
gtgt get(h,VerticalAlignment) middle
extent
posizione
Un sottoinsieme del TeX permette di avere
sottoscritti, sovrascritti, caratteri greci ed
altri simboli. gtgt text(0.3,0.5,'CiaoCiao_\alpha
','fontsize',24)
56Appendici
- Proprietà delle linee (presenti in vari oggetti)
- Le principali proprietà delloggetto root
- Le principali proprietà delle figure
- Le principali proprietà degli assi
- Delloggetto line
57Proprietà delle linee
- Gli oggetti line, patch, surface hanno delle
proprietà legate alle linee che li compongono - LineStyle Stile della linea
- LineWidth Larghezza della linea (0.5)
- Marker Tipo di Marker
- MarkerEdgeColor Colore none auto flat
- none trasparente
- auto colore delle linee che connettono i
marker. - flat colore del vertice.
- MarkerFaceColor Colore none auto flat
- none trasparente
- auto colore del background (asse o finestra)
- flat colore del vertice.
- MarkerSize Dimensione del marker
- Solo patch e surface
Stile delle linee Simbolo Stile - solid line
(default) -- dashed line dotted
line -. dash-dot line none no line
Tipo di Marker Marker Description plus
sign o circle asterisk . point x cross s square
d diamond upward pointing triangle v downward
pointing triangle gt right pointing
triangle lt left pointing triangle p five-pointed
star (pentagram) h six-pointed star
(hexagram) none no marker (default)
58Le principali proprietà di root
- Units Le solite, di default pixels.
- ScreenSize Left,Right,Width,Height, dimensioni
dello schermo, ovviamente Left e Right valgono 0
per tutte le unità eccetto che per pixels che
valgono 1. - PointerLocation x, y, posizione del mouse
nelle unità correnti. - ShowHiddenHandles on,off, di default off.
Rende visibili tutti gli handle, anche quelli
nascosti. (Ad esempio per gli axes, gli handle
nascosti sono quelli associati al titolo ed alle
label, anche se sono comunque raggiungibili con
altre proprietà). - gtgt get(0,ScreenSize)
- ans 1 1 1280 1024
- gtgt get(0,PointerLocation)
- ans 843 392
59Le principali proprietà delle figure
- Units Le unità di misura. Di default pixels.
- Position La posizione rispetto allo schermo
- Color Il colore di sfondo della figura.
- ColorMap La colormap impostata. Generalmente si
usa la funzione colormap per impostarla. - CurrentObject Loggetto corrente, ritornato da
gco. - DoubleBuffer permette semplici animazioni senza
lampeggiamenti. - IntegerHandle on off, specifica se lhandle
della figura deve essere intero. - Name Nome della figura che appare nel barra del
titolo. - NumberTitle Specifica se nella barra del titolo
deve apparire Figure No. n - Pointer La forma del mouse quando passa sulla
figura Orologio, freccia, etc.
Proprietà che specificano le caratteristiche
della carta per la stampa o la esportazione delle
figure PaperOrientation, PaperPosition,
PaperPositionMode, PaperSize, PaperType,
PaperUnits. Per esportare correttamente la figura
in modo che appaia come sullo schermo
impostare PaperType A4 PaperOrientation
Portrait PaperPositionMode auto
60Le principali proprietà degli assi
- Units Le unità di misura. Di default normalized.
- Position La posizione rispetto alla figura.
- Box on off. Traccia un box intorno al grafico.
- Clim cmin, cmax Minimo e massimo sullasse dei
colori. - ClimMode auto manual. Calcolo automatico o
manuale dellasse dei colori. - Color Colore dello sfondo del grafico.
- ColorOrder matrice nx3 che indica nel plot la
sequenza del colore delle linee. - DataAspectRatio dx, dy, dz Vettore con
laspect ratio per le unità di misura degli assi
(Vedere comando axis). Mode. - PlotBoxAspectRatio dx,dy,dz Vettore con
laspect ratio del plot. Mode. - Linewidth Larghezza delle linee del grafico.
- FontSize Dimensione delle font usate.
- FontUnits Unità di misura delle Font usate. Di
default point. - Title handle di un oggetto text con il titolo del
grafico.
61Proprietà del singolo asse (X,Y o Z)
- XAxisLocation top bottom (left right per
lasse Y). - XColor Colore dellasse. Di default nero.
- XDir normal reverse in senso crescente o
viceversa. - XGrid on off. Se è presente la griglia
principale - XLabel handle ad un oggetto text con la label.
Usare la funzione xlabel. - XLim min, max. Vettore con i due estremi. Usare
la funzione xlim. - XLimMode auto manual Se auto gli estremi del
grafico sono calcolati automaticamente. - XMinorGrid on off
- XMinorTick on off
- XScale linear log Lasse è lineare o
logaritmico. - XTick x1,x2, un vettore con le posizioni dei
tick. - XTickMode auto manual Se auto la posizione dei
tick è calcolata automaticamente. - XTickLabel Una matrice di stringhe con le label
assegnate ad ogni tick. - XTickLabelMode auto manual Se auto le label
sono calcolate automaticamente.
gtgt plot(14,101040) gtgt set(gca,Xgrid,on) gtgt
set(gca,XMinorTick,on) gtgt set(gca,XTickLabel
, uno,due,tre,quattro) gtgt
set(gca,YTick,17,27,37)
YTick
XGrid
XMinorTick
XTickLabel
62Principali proprietà di line
- Proprietà generali delle linee (Marker,
Linewidth, etc.) - Color Colore della linea
- XData, YData, ZData Vettori con le coordinate x,
y, z - Esempio
- gtgt x 00.21
- gtgt y sin(3x)x
- gtgt h plot(x,y,ob)
- gtgt get(h,XData)
- ans 0 0.20 0.40 0.60 0.80 1.00
- gtgt get(h,Marker)
- ans o
- gtgt get(h,LineStyle)
- ans --
- gtgt get(h,Color)
- ans 0 0 1
63Esempio (1) per ?
Esempio per stuzzicare l'appetito shot
18598 te ftudatav(shot,'e.ecmtmax') ne
ftudatav(shot,'co2dens')/1e20 ne
ne01.5 pe tene hf figure(1) hf e'
uguale ad 1 set(hf,'color','white') set(hf,Defau
ltAxesFontSize',12)
riga di commento, tutti i commenti iniziano con
. nella variabile shot viene inserito il numero
di sparo. vengono lette sia la temperatura che
la densità, la densità viene divisa per
1e20. per la densità si prendono solo i tempi
tra 0 e 1.5. La pressione è ottenuta come il
prodotto tra densità e temperatura. Visto che sia
te che ne sono degli oggetti vxy viene effettuata
automaticamente una interpolazione sui tempi
comuni. si crea o si seleziona la figura 1. hf è
lhandle della figura il cui valore in questo
caso è proprio 1. Si imposta il colore dello
sfondo della figura e si imposta la dimensione di
default dei font per assi che saranno creati
successivamente
64? Esempio (1) per ?
subplot(3,1,1) plot(te) ylabel('T_e
(keV)') title('Shot ' num2str(shot)) subp
lot(3,1,2) plot(ne) ylim(max(0,ylim)) ylabel('n_
e (1020m-3)')
Si seleziona il primo asse dei tre che si
vogliono si grafica la temperatura, si mette una
label sullasse y con ylabel. Il formato della
label utilizza un sottoinsieme del TeX, il
carattere _ significa che il carattere successivo
và sottoscritto. Si aggiunge un titolo al primo
asse che appare in alto nella figura. La funzione
num2str trasforma un numero in una stringa che
viene concatenata con Shot . Si seleziona il
secondo asse e si grafica la densità. I limiti
sullasse y vengono prima letti con la funzione
ylim poi si prende il massimo tra 0 ed i valori
letti, poi si reimpostano. Si aggiunge una label
sullasse y. Nel sottoinsieme del TeX il
carattere significa che il carattere successivo
va sovrascritto. Le parentesi graffe raggruppano
una serie di caratteri.
65? Esempio (1) per .
subplot(3,1,3) plot(pe) ylim(max(0,ylim)) ylab
el('p_e (keV 1020m-3)') xlabel('t
(s)') joinaxes
Si seleziona il terzo asse e si grafica la
pressione. I limiti sullasse y vengono prima
letti con la funzione ylim poi si prende il
massimo tra 0 ed i valori letti, poi si
reimpostano. Si aggiunge una label sullasse y.
, ed una label sullasse x. I grafici si
attaccano in modo da venire uno sopra allaltro.
Inoltre se fa lo zoom su un grafico, anche lasse
degli altri si modifica in corrispondenza.