Matlab: grafici ed altro

Slides:



Advertisements
Presentazioni simili
MATLAB.
Advertisements

MATLAB.
MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
3 a lezione - laboratorio a.a Corso di Laurea Ingegneria MECCANICA.
Corso di Matlab_Simulink per Ingegneria 3
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Trimr Gauss, tra le altre, fornisce una preziosissima funzione che risulta di estrema utilità nell’ambito matriciale. Questa funzione, chiamata trimr(x,t,b),
INTRODUZIONE A MATLAB.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
INTRODUZIONE A MATLAB/OCTAVE MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
IL SOFTWARE (FPwin 6.0).
© 2007 SEI-Società Editrice Internazionale, Apogeo
11. Lettura e Scrittura di file in Matlab
Definizione di logaritmo
La rappresentazione delle informazioni
Terza Lezione → Navigare nel file System → parte 2
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
Corso di Segnali e Sistemi
7. Strutture di controllo
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
MATRICI (ARRAY) IN MATLAB/OCTAVE
Equazioni differenziali
Excel 1 - Introduzione.
I FILES AD ACCESSO SEQUENZIALE
Programmazione strutturata
FORMULE E FUNZIONI SU EXCEL
Informatica per Scienze Geologiche LT a.a
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
ELEMENTI DI GRAFICA IN MATLAB/OCTAVE
Dipartimento di Elettronica e Informazione
realizzato dal prof.Conti Riccardo
Informatica per Scienze Geologiche LT a.a
Analisi di Immagini e Dati Biologici
INTRODUZIONE A EXCEL Il foglio elettronico o foglio di calcolo è una tabella che contiene parole e numeri che possono essere elaborati applicando formule.
Informatica per Scienze Geologiche LT a.a
Secondo Programma in C.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA RETTA.
I fogli elettronici Microsoft Excel.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
WORD 28/02/2019 Informatica - WORD.
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Excel 3 - le funzioni.
Processi decisionali e funzioni di controllo
Fogli di Calcolo Elettronici
UNIT 12 INTERFACCIA SERIALE.
Unità 1 Programmi base.
Plot dei dati di FTU con Python
Array e Stringhe Linguaggio C.
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Docente: Sabato Bufano
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Corso di Fondamenti di Informatica
Transcript della presentazione:

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

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

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

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

Edmondo Giovannozzi ENEA C.R. Frascati Per iniziare Per iniziare: <giovan@efrs05 ~> 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

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

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 = 1 2 3 4 5 6 >> whos Name Size Bytes Class a 1x4 32 double array b 4x1 32 double array c 2x3 32 double array >> clear % per cancellare le variabili create Attenzione come in FORTRAN le matrici sono memorizzate per colonne: c 1 4 2 5 3 6 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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 = 0 0.4000 0.8000 1.2000 1.6000 2.0000 >> d = c’ ; % vettore colonna trasposto di c >> 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

Edmondo Giovannozzi ENEA C.R. Frascati Indici >> a = [1,2,3; 4,5,6] a = 1 2 3 4 5 6 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

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 = 5 7 9 Così anche molte funzioni elementari >> y = sin(0:0.4:2) y = 0 0.3894 0.7174 0.9320 0.9996 0.9093 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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 = 0 0 0.3333 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

Edmondo Giovannozzi ENEA C.R. Frascati Numeri complessi I numeri complessi sono gestiti automaticamente in Matlab >> a = log(-2) a = 0.6931 + 3.1416i >> a + (3 + 2i) + 3j ans = 3.6931 + 8.1416i >> b = complex(2) b = 2 >> isreal(b) ans = 0 >> imag(b) >> exp(a) ans = -2.0000 + 0.0000i >> imag(exp(a)) ans = 2.4493e-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 = 1 0 + 2i 3 0 + 4i >> a’ ans = 1 3 0 – 2i 0 – 4i >> a.’ 0 + 2i 0 + 4i Attenzione, l’operatore “ ’ ” calcola la matrice …, usare l’operatore “ .’ ” per la semplice trasposizione 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

Array e operatori logici >> b = a > 30 b = 0 0 0 1 1 1 >> whos Name Size Bytes Class a 1x6 48 double array b 1x6 48 double array (logical) >> a(b) ans = 40 50 60 >> id = find(B) id = 4 5 6 >> 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

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 2x5 10 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

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 1x3 400 cell array b 1x1 128 cell array c 1x4 8 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

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 = 1 2 3 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

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

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 = 2.3333 >> a = [1,2; 3,4; 6,8] a = 1 2 3 4 6 8 ans = 3.3333 4.6667 >> diff(a) ans = 2 2 3 4 >> 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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 1x3 24 double array b 1x4 8 char array c 1x1 176 struct array >> a = [1,2,3; 4,5,6]; >> save pluto a –ascii >> type pluto 1.0000e+00 2.0000e+00 3.0000e+00 4.0000e+00 5.0000e+00 6.0000e+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 3.500000 >> 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

Lettura di un file di testo >> type pluto 1.0000e+00 2.0000e+00 3.0000e+00 4.0000e+00 5.0000e+00 6.0000e+00 >> a = load(‘pluto’) a = 1 2 3 4 5 6 >> 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 >> 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

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

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

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

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

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

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

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: $DASROOT/matlab/@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/@vxy/plot.m 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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 = 4 5 6 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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: http://fusfis.frascati.enea.it/Software/Unix/FTUdata/Matlab/index.html 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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 = 12.5 14 NaN >> b = vxy([4,5,6],[1.5,1.8,4]) b = x:[4 5 6] y:[1.5 1.8 4.0] ud:[] >> c = a.f(b) c = x: [4 5 6] y: [12.5 14.0 NaN] ud: [] >> d = a:[1.5,1.8,4] d = x: [1.5000 1.8000] y: [12.5 14.0] 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

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

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

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

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: <giovan@efrs10> vs2mat esemcar.vs … >> load esemcar >> 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 >> tok tok = 1 1 2 2 >> LABEL LABEL = 'FTU' 'JET‘ >> te te = 1.1000 NaN 5.7000 6.3000 * File tipo versus V tok te ne F A F F .data FTU 1.1 2e20 FTU . 3e20 JET 5.7 1e20 JET 6.3 8e19 ; 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

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

Edmondo Giovannozzi ENEA C.R. Frascati Altro esempio >> dayshot(23600) 11-Apr-2003 Numero di shot:9 Shot iniziale: 23596 Shot finale: 23604 shot ora scarica durata Btor Ipl(kA) 23596 12:09 PROVA_IMP 0.00 0.00 0 23597 12:18 S60M50A06I 0.00 5.88 0 23598 12:36 S60M50A06I 1.73 5.92 -497 23599 12:59 S60M50A06I 1.73 5.92 -491 23600 13:14 S60M90A004 1.75 5.88 -887 23601 13:44 S79M80LE03 1.42 7.87 -788 23602 15:56 S79M80LE03 1.43 7.86 -788 23603 16:21 S79M80LE03 0.00 5.77 0 23604 16:43 S79M80LE03 1.40 7.87 -783 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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

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

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 = 4 5 6 8 6 5 5 6 7 6 5 5 >> whos Name Size Bytes Class x 1x4 32 double array y 1x3 24 double array z 3x4 96 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

Edmondo Giovannozzi ENEA C.R. Frascati Pseudo color Plot La funzione pcolor ha gli stessi parametri della contour (eccetto nc): >> z z = 4 5 6 8 6 5 5 6 7 6 5 5 >> 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

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 = 0 20 >> axis 0 20.000 -1.1000 1.3000 Il comando axis permette di impostare diverse proprietà dell’asse corrente. 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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 = 3.0010 >> gca ans = 101.0009 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

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 = 102.0009 >> get(gca,’children’) ans = 102.0009 >> 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

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

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

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

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

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

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

Edmondo Giovannozzi ENEA C.R. Frascati Colormap >> pcolor(magic(4)) >> shading interp >> colorbar >> colormap(jet) >> colormap(gray) >> 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 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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

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

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

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 = 1 1 1280 1024 >> get(0,’PointerLocation’) ans = 843 392 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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

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

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 = 0 0.20 0.40 0.60 0.80 1.00 >> get(h,’Marker’) ans = o >> get(h,’LineStyle’) ans = -- >> get(h,’Color’) ans = 0 0 1 12/11/2018 Edmondo Giovannozzi ENEA C.R. Frascati

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

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

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