La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Matlab: grafici ed altro

Presentazioni simili


Presentazione sul tema: "Matlab: grafici ed altro"— Transcript della presentazione:

1 Matlab: grafici ed altro
Edmondo Giovannozzi ENEA C.R. Frascati

2 Edmondo Giovannozzi ENEA C.R. Frascati
Outline Esempio per stuzzicare l’appetito Introduzione a Matlab Lettura dati di FTU Grafica in Matlab Esempi 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

3 Esempio (1) per stuzzicare l’appetito
shot = 18598; te = ftudatav(shot,'%e.ecmtmax'); ne = ftudatav(shot,'$co2dens')/1e20; ne = ne:0:1.5; pe = te*ne; 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)) ylabel('n_e (10^{20}m^{-3})') subplot(3,1,3) plot(pe) ylim(max(0,ylim)) ylabel('p_e (keV 10^{20}m^{-3})') xlabel('t (s)') joinaxes 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

4 Edmondo Giovannozzi ENEA C.R. Frascati
Per iniziare Creare una directory: $HOME/matlab File di startup eseguito all’inizio $HOME/matlab/startup.m (copiare da ~giovan/fus/general/corsoMatlab) Directory matlab FTU $DASROOT/matlab Esempi in: ~giovan/fus/general/corsoMatlab 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

5 Edmondo Giovannozzi ENEA C.R. Frascati
Per iniziare Per iniziare: ~> matlab & Per uscire: >> exit Help >> help <nome comando> Esempio: >> help plot Informazioni sulle variabili presenti in memoria >> 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: >> ! <comando unix> >> [s,w] = unix(‘<comando unix>’) 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. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

6 Edmondo Giovannozzi ENEA C.R. Frascati
Help Struttura dell’help Guida all’uso help di base Guida di riferimento funzioni di fit avanzato filtraggio segnali etc. spline Statistica Tutte le proprietà grafiche 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

7 Edmondo Giovannozzi ENEA C.R. Frascati
Matrici reali >> a = [1, 2, 3, 4]; % vettore orizzontale di numeri reali >> b = [1; 2; 3; 4]; % vettore verticale di numeri reali >> c = [1,2,3; 4,5,6] % matrice 2x3 di numeri reali c = >> whos Name Size Bytes Class a x double array b x double array c x double array >> clear % per cancellare le variabili create Attenzione come in FORTRAN le matrici sono memorizzate per colonne: c 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

8 Creazione Matrici reali
>> a = ones(2,3); % matrice 2x3 piena di 1 >> b = zeros(3,2); % matrice 3x2 piena di 0 >> c = 0:0.4:2 % vettore di reali tra 0 e 2 a passi di 0.4 c = >> d = c’ ; % vettore colonna trasposto di c >> whos Name Size Bytes Class a x double array b x double array c x double array d x double array Grand total is 24 elements using 192 bytes 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

9 Edmondo Giovannozzi ENEA C.R. Frascati
Indici >> a = [1,2,3; 4,5,6] a = Selezione del 5 elemento in memoria >> a(5) ans = 3 Indici: k l’elemento k-esimo. k:h dall’elemento k a quello h. k:d:h come sopra a passi di d. k:end dall’elemento k alla fine. k:end-1 dall’elemento k al penultimo : tutti gli elementi di quella dimensione. a con a vettore di indici, gli elementi corrispondente all’indice. b con b vettore logico, gli elementi per cui b è 1. Tutti gli elementi >> a(:) ans = 1 4 2 5 3 6 Selezione di un singolo elemento >> a(2,3) ans = 6 Selezione di una colonna >> a(:,2) ans = 2 5 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

10 Edmondo Giovannozzi ENEA C.R. Frascati
Operatori (1) Molti operatori lavorano elemento per elemento: >> a = [1,2,3]; >> b = [4,5,6]; >> a + b ans = Così anche molte funzioni elementari >> y = sin(0:0.4:2) y = 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

11 Edmondo Giovannozzi ENEA C.R. Frascati
Operatori (2) Gli operatori matematici: “*” , “/” , “^” , “\” sono matriciali, i corrispondenti operatori che operano elemento per elemento sono: “.*”, “./”, “.^” , “.\”. L’operatore “\” risolve il sistema di equazioni matriciale: A*X = B , X = A\B. Attenzione: >> a = [1 ; 2 ; 3]; >> 1 / a ans = L’operazione matematica è definita, anche se molto spesso non è ciò che volevamo. Per avere l’inverso del vettore, elemento per elemento dovevamo scrivere: >> 1 ./ a 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

12 Edmondo Giovannozzi ENEA C.R. Frascati
Numeri complessi I numeri complessi sono gestiti automaticamente in Matlab >> a = log(-2) a = i >> a + (3 + 2i) + 3j ans = i >> b = complex(2) b = 2 >> isreal(b) ans = 0 >> imag(b) >> exp(a) ans = i >> imag(exp(a)) ans = e-16 Funzioni: conj complesso coniugato. real parte reale. imag parte immaginaria. abs magnitudine. angle angolo di fase in radianti. isreal test se è un vettore reale o complesso >> a = [1,2i;3,4i] a = i i >> a’ ans = 0 – 2i 0 – 4i >> a.’ 0 + 2i i Attenzione, l’operatore “ ’ ” calcola la matrice …, usare l’operatore “ .’ ” per la semplice trasposizione 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

13 Array e operatori logici
>> b = a > 30 b = >> whos Name Size Bytes Class a x double array b x double array (logical) >> a(b) ans = >> id = find(B) id = >> a(id) Operatori di comparazione: == uguale a ~= diverso da >, < maggiore, minore >=, <= 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). 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

14 Edmondo Giovannozzi ENEA C.R. Frascati
Stringhe Le stringhe sono vettori riga di caratteri: >> sa = [‘pluto’ ; ‘pippo’] sa = pluto pippo >> whos Name Size Bytes Class sa x char array Attenzione in memoria sono memorizzate per colonne >> sa(:)’ ans = ppliuptpoo Per maggiori informazioni: >> help strfun >> help strings Principali funzioni: ischar test se un vettore è una stringa. strcmp compara due stringhe. findstr trova una stringa all’interno di un’altra strtok separa una stringa in token (uno per volta) (strmtok) trova tutti i token di una stringa (scritta a Frascati). num2str trasforma 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) 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

15 Edmondo Giovannozzi ENEA C.R. Frascati
Array di celle array di celle: può contenere oggetti di diversa natura. Si creano con le parentesi graffe. >> a = {1, ‘Ciao’, [1,2,3] } a = [1] 'Ciao' [1x3 double] >> b = a(2); >> c = a{2}; >> whos Name Size Bytes Class a x cell array b x cell array c x char array >> st = {‘pippo’,’pluto’,’topolino’}; è ancora un array di celle composto di una sola cella. è l’elemento nella cella Per inserire un elemento in un array di celle preesistente: >> a(2) = {‘FTU’} >> a{2} = ‘FTU’ >> a(2:3) = {‘FTU’,123} >> a{2:3} = ?? errato specialmente utile con stringhe di diversa lunghezza 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

16 Edmondo Giovannozzi ENEA C.R. Frascati
Strutture >> a.x = 1; >> a.y = [1,2,3]; >> a.s = ‘Ciao’ a = x: 1 y: [1 2 3] s: 'Ciao‘ >> a(2).x = ‘pluto’ 1x2 struct array with fields: x y s >> a(1).y ans = Un’unica variabile a è composta di diversi campi (x, y, s nell’esempio), che possono essere variabili di qualsiasi tipo. Si può avere un array di strutture. Stessa sintassi per leggere il valore di un campo 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

17 Edmondo Giovannozzi ENEA C.R. Frascati
Funzioni matematiche >> pi ans = >> atan2(3,4) ans = >> round(3.6) ans = 4 >> floor(3.6) ans = 3 >> mod(13,5) >> 1/0 ans = Inf >> eps ans = e-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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

18 Edmondo Giovannozzi ENEA C.R. Frascati
Funzioni 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. >> a = [1,2,4]; >> mean(a) ans = >> a = [1,2; 3,4; 6,8] a = 3 4 6 8 ans = >> diff(a) ans = 3 4 >> cumtrapz([10,20,30],a) ans = 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

19 Edmondo Giovannozzi ENEA C.R. Frascati
Input Output >> a = [1,2,3]; >> b = ‘Ciao’; >> save prova >> clear >> load prova >> c = load(‘prova’) c = a: [1 2 3] b: ‘Ciao’ >> whos Name Size Bytes Class a x double array b x char array c x struct array >> a = [1,2,3; 4,5,6]; >> save pluto a –ascii >> type pluto 1.0000e e e+00 4.0000e e e+00 Per salvare dei dati e recuperarli usare le funzioni save e load. i dati vengono scritti in binario in un file .mat: >> save nomefile variabile1 variabile2 >> load nomefile >> var = load(‘nomefile’) Nell’ultimo caso le variabili vengono memorizzate come membri in una struttura, con l’opzione –ascii si scrivono e si leggono in formato ascii (usare solo con singole matrici). >> fid = fopen(‘pippo’,’w’) >> fprintf(fid,’Ciao %f’,3.5) >> fclose(fid) >> type pippo Ciao >> fprintf(‘Ciao Ciao’) Ciao Ciao >> a = sprintf(‘Ciao’) a = Ciao Senza l’indicazione del file scrive sullo schermo 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

20 Lettura di un file di testo
>> type pluto 1.0000e e e+00 4.0000e e e+00 >> a = load(‘pluto’) a = >> type esempio.vs * File versus di esempio V tempo te ne .data >> 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 dall’utente Esempio: >> 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). 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

21 Edmondo Giovannozzi ENEA C.R. Frascati
Input/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: >> fprintf(‘a=%6.2f’,3.5) a= 3.50 >> fprintf(‘b=%-6.3dA’,11) b=011 A >> fprintf(‘b=%06d’,11) b=000011 >> fprintf(‘Ciao \nCiao’,11) Ciao Caratteri speciali \n New line \r Carriage return \t Horizontal tab \\ Backslash '' Single quotation mark %% Percent character 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

22 Strutture di programmazione
if <condizione> elseif <condizione> else end switch <variabile> case <valore> case {<valore1>, <valore2>} otherwise end <variabile> e <valore> possono essere un’espressione il cui risultato è un numero scalare o una stringa. for i = <beg>:<end> end try catch end Gestione dell’errore Normalmente vengono eseguite le istruzioni tra try e catch, in caso di errore quelle tra catch ed end. while <condizione> end break uscita anticipata da un ciclo for o while continue salta le rimanenti istruzioni e va alla successiva iterazione. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

23 Edmondo Giovannozzi ENEA C.R. Frascati
Funzioni 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: >> [out1,out2,…] = funzione(in1,in2,…) oppure >> 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 all’utente. 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 d’uscita. 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 = … 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

24 Funzioni base per il plot
>> x = 0:0.8:10; >> y1 = sin(x); >> y2 = cos(x); >> figure >> subplot(2,1,1) >> plot(x,y1) >> subplot(2,1,2) >> 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. (3,2,1) (3,2,2) (3,2,3) (3,2,4) (3,2,5) (3,2,6) 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 l’help della funzione plot per i dettagli. Nell’esempio considerato: ‘o’ marker circolare, ‘r’ linea e marker di colore rosso, ‘- -’ linea tratteggiata. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

25 Lettura dati FTU ed altro
L’oggetto vxy Scrittura canali dollaro Varie routine disponibili a Frascati 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

26 Edmondo Giovannozzi ENEA C.R. Frascati
Lettura dati FTU >> ip = ftudatav(18598,’zzzzed.ipl’) ip = x: [1x2048 double] y: [1x2048 double] ud: [1x1 struct] >> 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. >> shots = [18598,18591]; >> ip = ftudatav(shots,’zzzzed.ipl’); >> chans = {‘%e.ecmtmax’, ’zzzzed.vpl’} ; >> va = ftudatav(18598,chans) va = 1x2 vxy object la corrente il numero di sparo Il canale appena letto Le label e le altre informazioni 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

27 Edmondo Giovannozzi ENEA C.R. Frascati
Oggetti VXY >> te = ftudatav(18598,’%e.ecmtmax’) te = x: [1x296 double] y: [1x296 double] ud: [1x1 struct] >> ip = ftudatav(18598,’zzzzed.ipl’) ip = x: [1x2048 double] y: [1x2048 double] >> a = te * ip a = x: [1x1772 double] y: [1x1772 double] ud: [] >> plot(a) Non sono strutture ma oggetti. Ad esempio l’operazione * corrisponde alla routine: per ottenere il risultato si interpolano i due vettori su una base delle x comune. Anche la funzione plot corrisponde a: 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

28 Oggetti VXY: creazione
Creare oggetti VXY >> a = vxy; % oggetto vxy vuoto >> a = vxy(struttura) % una struttura con un campo x ed uno y >> a = vxy(xvect,yvect) % due vettori della stessa lunghezza >> a = vxy(xvect,’formula’) % un vettore ed una formula funzione di x Esempi: >> a = vxy([1,2,3],[4,5,6]); >> bs.x = [1,2,3]; bs.y = [4,5,6]; >> b = vxy(bs) b = x: [1 2 3] y: [4 5 6] ud: [] >> c = vxy(0.1:0.1:10,’sin(x)’) c = x: [1x100 double] y: [1x100 double] ud: 'sin(x)' Il campo ud (user data) può contenere dei dati utente. >> b.ud = ‘Ciao’ b = x: [1 2 3] y: [4 5 6] ud: 'Ciao' >> b.y = [7,8,9] ??? Error using ==> vxy/subsasgn It is not allowed to write to the y field >> dd = b.y dd = 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

29 Oggetti 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 è l’unione delle due basi x nella zona dove entrambi i dati sono definiti. Interpolazione lineare di default, ma può essere cambiata tramite la funzione setinterpfun. x1 x2 xr y1 y2 yr Tutte i valori di x1 ed x2 nell’intervallo di validità. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

30 Oggetti 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(i+1)]. Es: >> plot(te, mea(te, [0.1,0.2,0.3,0.6,1.4]),‘+k') >> vline([0.1,0.2,0.3,0.6,1.4]),’k--’) Per altre informazioni vedere: 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

31 Oggetto vxy: operatore ‘:’
L’operatore : in matlab è l’unico operatore ternario, ovvero può agire su tre oggetti. b = a:v a interpolato ai valori del vettore v (a vxy, b vxy, v vettore). b = a:c a interpolato alle ascisse di c (a vxy, b vxy, c vxy). b = a:dx a interpolato a passi dx (a vxy, b vxy, dx scalare). b = a:xmn:xmx a ma soltanto per le ascisse comprese tra xmn e xmx, nessuna interpolazione. (a vxy, b vxy, xmn xmx scalari). Attenzione l’operatore : ha una bassissima priorità, mettere sempre le parentesi intorno!!! Es: >> b = (a:0.5:0.8)*3; Esempio: >> plot(te, 0.5+(te : 0.5 : 1)) 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

32 Oggetti vxy: campi fittizi
Esempio: >> a = vxy([1,2,3],[10,15,12]); >> a.f(1.5) ans = 12.5 >> a.f([1.5, 1.8, 4]) ans = NaN >> b = vxy([4,5,6],[1.5,1.8,4]) b = x:[4 5 6] y:[ ] ud:[] >> c = a.f(b) c = x: [4 5 6] y: [ NaN] ud: [] >> d = a:[1.5,1.8,4] d = x: [ ] y: [ ] Oltre ai campi x, y ed ud esiste il campo fittizio f che permette di vedere l’oggetto vxy come una funzione: a.f(vect) valore di a ai valori di vect. a.f(b) composizione funzionale. Il nuovo oggetto ha le stesse x dell’oggetto b, e le y dell’interpolazione di a sulle y di b v a.f(v) Diverso è il comportamento dell’operatore : che ritorna sempre un oggetto vxy sia pure con la base delle x cambiata. Notare la scomparsa del NaN. a a:v 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

33 Edmondo Giovannozzi ENEA C.R. Frascati
Oggetti 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: >> te = ftudatav([18598,18591],’%e.ecmtmax’); te = 1x2 vxy object >> plot(te) Per accedere al campo fittizio f mettere (:) prima del punto: >> te(:).f(0.5) Ci sono due funzioni che creano dei cell array di canali: ftuchan, e ftudaslist. >> ch = ftuchan(‘%e.ecmtvt’,[0.93,0.97,1.0]) ch = '%e.ecmtvt(0.93)' '%e.ecmtvt(0.97)' '%e.ecmtvt(1)' >> te = ftudatav(18598,ch); >> ftudaslist(18598,'zzzz*')' ans = 'ZZZZED.IPL' 'ZZZZED.VPL' 'ZZZZEE.DCN' 'ZZZZEE.HXR' 'ZZZZEM.IBT' 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

34 Scrittura 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.famiglia:$canale) 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: >> dbput(18598,'giovan.pr:$prova',{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.famiglia:$canale 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

35 Edmondo Giovannozzi ENEA C.R. Frascati
Funzioni varie >> joinaxes >> mplot('#18598',1,'ne',ne,ne2,2,'Te',te) >> plot(x,y) >> vline([-1,2,4],'k--') >> hline([-0.5,0.5],'r:') 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

36 Strumenti 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: vs2mat esemcar.vs >> load esemcar >> whos Name Size Bytes Class LABEL 1x cell array ne x double array te x double array tok x double array >> tok tok = >> LABEL LABEL = 'FTU' 'JET‘ >> te te = NaN * File tipo versus V tok te ne F A F F .data FTU e20 FTU e20 JET e20 JET e19 ; esemcar.vs Per creare file versus dai dati FTU, vedere totab. (GiovanniBracco) (Giovanni Bracco): ~bracco/matlab/analisi_leggi_scala.m 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

37 Edmondo Giovannozzi ENEA C.R. Frascati
Altri Esempi Per l’analisi dei segnali %E.ECPFAST >> ecpfastui 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

38 Edmondo Giovannozzi ENEA C.R. Frascati
Altro esempio >> dayshot(23600) 11-Apr Numero di shot:9 Shot iniziale: Shot finale: 23604 shot ora scarica durata Btor Ipl(kA) :09 PROVA_IMP :18 S60M50A06I :36 S60M50A06I :59 S60M50A06I :14 S60M90A :44 S79M80LE :56 S79M80LE :21 S79M80LE :43 S79M80LE 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

39 Edmondo Giovannozzi ENEA C.R. Frascati
La Grafica Funzioni Grafiche più complesse Uso degli handle 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

40 Altre funzioni grafiche
Per avere assi logaritmici si usano semilogx, semilogy, loglog, I parametri sono quelli della funzione plot: >> semilogy(1:10,exp(1:10)) per fare dei grafici con le barre di errore usare la funzione errobar: >> errorbar(x, y, dy, stile) >> errorbar(x, y, dyl, dyu, stile) Esempio >> x = 1:9; >> y = sin(x); >> ye = abs(rand(1,9)); >> errorbar(x, y, ye, ’or--’) pcolor contour, contourf errorbar semilogx, semilogy, loglog xlabel, ylabel legend xlim, ylim axis hold 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

41 Edmondo Giovannozzi ENEA C.R. Frascati
Sovrapporre grafici Per sovrapporre dei grafici nello stesso asse usare il comando hold, che permette di non cancellare i grafici già presenti nell’asse considerato. >> hold on >> hold off Esempio: >> x = 1:9; >> y = sin(x); >> ye = abs(rand(1,9)); >> errorbar(x, y+ye/2, ye, ’o’) >> plot(1:0.1:9,sin(1:0.1:9),’k’) Nota: Il comando hold cambia la proprietà ‘NextPlot’ dell’asse e della figura corrente. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

42 Edmondo Giovannozzi ENEA C.R. Frascati
Contour plot Le funzioni sono: contour, contourf. La funzione contourf, si differenzia dalla contour solo perché le curve di livello sono riempite. Uso: >> contour(x, y, z, nc) >> 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: >> x = [1,2,3,4]; >> y = [1,2,3]; >> z = [4,5,6,8; 6,5,5,7; 7,6,5,5] z = >> whos Name Size Bytes Class x x double array y x double array z x double array >> contour(x,y,z,20) Attenzione all’orientamento della matrice z. La coordinata y scorre lungo le colonne. Stampata (nr,1) (1,nc) (nr,nc) (1,1) colonne righe contour o pcolor (1,1) (nr,nc) (1,nc) (nr,1) x(*) y(*) (*) x, y crescenti 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

43 Edmondo Giovannozzi ENEA C.R. Frascati
Pseudo color Plot La funzione pcolor ha gli stessi parametri della contour (eccetto nc): >> z z = >> pcolor(x,y,z) >> 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 dall’alto. >> shading interp 6 5 5 4 5 6 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

44 Edmondo Giovannozzi ENEA C.R. Frascati
Label, leggende, etc. >> x=0:0.1:20; >> plot(x,sin(x),x,cos(x)) >> xlabel(‘Tempo’) >> ylabel(‘Valore’) >> title(‘Seni e Coseni’) >> legend(‘Seno’,’Coseno’) >> grid on >> ylim([-1.1,1.3]) >> xlim ans = >> axis Il comando axis permette di impostare diverse proprietà dell’asse corrente. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

45 Edmondo Giovannozzi ENEA C.R. Frascati
Gli handle Ogni oggetto grafico ha assegnato un handle, ovvero un numero reale che si riferisce a quell’oggetto. Il numero 0 è l’handle del’oggetto 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. >> h = figure h = 1 >> gcf ans = 1 >> hp = plot([1,2],[1,1]) hp = >> gca ans = handle della figura: è un numero intero handle della linea disegnata Le due funzioni: gcf Get Current Figure gca Get Current Axes ritornano la figura e l’asse corrente handle del nuovo asse 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

46 Edmondo Giovannozzi ENEA C.R. Frascati
Le 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. >> h = plot(1:10,sin(1:10)) h = >> get(gca,’children’) ans = >> set(gcf, ’color’, ’yellow’) >> set(h, ’linewidth’,5) >> set(gca,’position’, [0.5,0.5,0.4,0.4]) >> set(gca,’fontsize’, 20) >> get([ gcf, gca, h],'type') ans = 'figure' 'axes' 'line' 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

47 Edmondo Giovannozzi ENEA C.R. Frascati
Le Proprietà (2) Funzioni per cambiare o leggere le proprietà: gcf handle della figura corrente gca handle dell’asse 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à dell’oggetto h. set(h) Mostra a schermo tutte le possibili impostazioni delle proprietà dell’oggetto h. Esempio: >> get(1) Alphamap = [ (1 by 64)… BackingStore = on CloseRequestFcn = clos… Color = [1 1 1] Colormap = [ (64 by 3) … >> set(1) Alphamap BackingStore: [ {on} | off ] CloseRequestFcn: string -or- function handle -or- cell array Color Colormap 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

48 Gerarchia degli oggetti grafici
Root Figure Axes Uicontrol Uimenu Uicontextmenu Image Light Line Patch Rectangle Surface Text Ogni oggetto grafico è figlio di un solo genitore e può avere più di un figlio. Due proprietà descrivono le relazioni di parentela: Children vettore con gli handle degli oggetti figli. Parent handle dell’oggetto genitore. L’oggetto root non ha genitori. Image, Light, Line, Patch, Rectangle, Surface, Text non hanno figli 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

49 Edmondo Giovannozzi ENEA C.R. Frascati
Esempi Patch Surface Rectangle Text 3D Surface 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

50 Le principali proprietà comuni
Comuni a tutti: Type Tipo di oggetto grafico Tag Stringa con un nome per l’oggetto. Può non essere specificato. Visible on | off, indica se l’oggetto è visibile oppure no. Parent Handle del genitore. Tranne l’oggetto 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 all’interno dell’asse genitore. Proprietà comuni a molti oggetti descritte nel seguito: Posizione Colore Assi Testi Clipping on Clipping off 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

51 Edmondo Giovannozzi ENEA C.R. Frascati
Posizione Comuni a figure, axes, uicontrol, text, rectangle. Units Unità di misura: pixels, normalized, inches, centimeters, points, characters, data (solo per l’oggetto text). L’oggetto rectangle non ha questa proprietà. Position vettore di 4 componenti [Left, Bottom, Width, Height] (vettore di 3 componenti per l’oggetto 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. Height Width Bottom Left Oggetto genitore Oggetto figlio (0,0) (1,1) La posizione degli altri oggetti è specificata rispetto agli assi nelle unità data. Proprietà: XData, YData, ZData 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

52 Edmondo Giovannozzi ENEA C.R. Frascati
Colore Colormap Quasi tutti gli oggetti, hanno una o alcune proprietà che specificano un colore direttamente. Specifica diretta terna RGB nome (lungo o breve) 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 Gli oggetti surface, patch ed image usano le colormap. Colormap Diretto Indice all’interno della colormap (1-ncmap) Scalato (dipende dalla proprietà Clim dell’asse) 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

53 Edmondo Giovannozzi ENEA C.R. Frascati
Colormap >> pcolor(magic(4)) >> shading interp >> colorbar >> colormap(jet) >> colormap(gray) >> jet ans = ... Matrice nx3 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

54 Edmondo Giovannozzi ENEA C.R. Frascati
Proprietà di un asse >> plot(1:4,10:10:40) >> set(gca,’Xgrid’,’on’) >> set(gca,’XMinorTick’,’on’) >> set(gca,’XTickLabel’, {‘uno’,’due’,’tre’,’quattro’}) >> set(gca,’YTick’,[17,27,37]) >> set(gca,’FontSize’,12) >> get(gca,’XLim’) ans = 1 4 YTick XGrid Le funzioni axis, xlim, ylim permetto comunque di impostare molte delle proprietà degli assi. XMinorTick XTickLabel 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

55 Edmondo Giovannozzi ENEA C.R. Frascati
Text 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. L’effettiva posizione del testo è data dalla proprietà extent. Le proprietà HorizontalAlignment e VerticalAlignment influenzano la posizione dell’extent. >> plot(x,y) >> h = text(0.3,0.5,'Ciao! Argh!','fontsize',24); >> line(0.3,0.5,'Marker','+','Color','r') >> rectangle('pos',get(h,'Extent')) >> get(h,’VerticalAlignment’) middle extent posizione Un sottoinsieme del TeX permette di avere sottoscritti, sovrascritti, caratteri greci ed altri simboli. >> text(0.3,0.5,'Ciao^{Ciao}_\alpha','fontsize',24); 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

56 Edmondo Giovannozzi ENEA C.R. Frascati
Appendici Proprietà delle linee (presenti in vari oggetti) Le principali proprietà dell’oggetto root Le principali proprietà delle figure Le principali proprietà degli assi Dell’oggetto line 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

57 Edmondo Giovannozzi ENEA C.R. Frascati
Proprietà 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* auto colore del background (asse o finestra) 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 > right pointing triangle < left pointing triangle p five-pointed star (pentagram) h six-pointed star (hexagram) none no marker (default) 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

58 Le 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à). >> get(0,’ScreenSize’) ans = >> get(0,’PointerLocation’) ans = 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

59 Le 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 L’oggetto corrente, ritornato da gco. DoubleBuffer permette semplici animazioni senza lampeggiamenti. IntegerHandle {on off}, specifica se l’handle 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

60 Le 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 sull’asse dei colori. ClimMode auto | manual. Calcolo automatico o manuale dell’asse 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 l’aspect ratio per le unità di misura degli assi (Vedere comando axis). …Mode. PlotBoxAspectRatio… [dx,dy,dz] Vettore con l’aspect 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. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

61 Proprietà del singolo asse (X,Y o Z)
XAxisLocation top | bottom (left | right per l’asse Y). XColor Colore dell’asse. 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 L’asse è 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. >> plot(1:4,10:10:40) >> set(gca,’Xgrid’,’on’) >> set(gca,’XMinorTick’,’on’) >> set(gca,’XTickLabel’, … {‘uno’,’due’,’tre’,’quattro’}) >> set(gca,’YTick’,[17,27,37]) YTick XGrid XMinorTick XTickLabel 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

62 Principali 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: >> x = 0:0.2:1; >> y= sin(3*x)+x; >> h = plot(x,y,’ob—’); >> get(h,’XData’) ans = >> get(h,’Marker’) ans = o >> get(h,’LineStyle’) ans = -- >> get(h,’Color’) ans = 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

63 Edmondo Giovannozzi ENEA C.R. Frascati
Esempio (1) per …  % Esempio per stuzzicare l'appetito shot = 18598; te = ftudatav(shot,'%e.ecmtmax'); ne = ftudatav(shot,'$co2dens')/1e20; ne = ne:0:1.5; pe = te*ne; hf = figure(1); % hf e' uguale ad 1 set(hf,'color','white'); set(hf,‘DefaultAxesFontSize',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 è l’handle 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

64 Edmondo Giovannozzi ENEA C.R. Frascati
 Esempio (1) per …  subplot(3,1,1) plot(te) ylabel('T_e (keV)') title(['Shot: ' num2str(shot)]) subplot(3,1,2) plot(ne) ylim(max(0,ylim)) ylabel('n_e (10^{20}m^{-3})') Si seleziona il primo asse dei tre che si vogliono si grafica la temperatura, si mette una label sull’asse 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 sull’asse 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 sull’asse y. Nel sottoinsieme del TeX il carattere ^ significa che il carattere successivo va sovrascritto. Le parentesi graffe raggruppano una serie di caratteri. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

65 Edmondo Giovannozzi ENEA C.R. Frascati
 Esempio (1) per … . subplot(3,1,3) plot(pe) ylim(max(0,ylim)) ylabel('p_e (keV 10^{20}m^{-3})') xlabel('t (s)') joinaxes Si seleziona il terzo asse e si grafica la pressione. I limiti sull’asse 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 sull’asse y. , ed una label sull’asse x. I grafici si attaccano in modo da venire uno sopra all’altro. Inoltre se fa lo zoom su un grafico, anche l’asse degli altri si modifica in corrispondenza. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati


Scaricare ppt "Matlab: grafici ed altro"

Presentazioni simili


Annunci Google