Software per le Telecomunicazioni - uniroma2.it · Mathematica Windows, Mac, ... 9 Una volta...
Transcript of Software per le Telecomunicazioni - uniroma2.it · Mathematica Windows, Mac, ... 9 Una volta...
1
1
Software per le Telecomunicazioni
Docente: Ing. Dajana Cassioli
Stanza 4187 – Dip. Ing. ElettronicaTel. 06 7259 7439e-mail: [email protected]
Università degli studi di Roma Tor Vergataa.a. 2005-2006
2
InfoMateriale consigliato:
ManualiGuide di MATLAB sul sito www.mathworks.com (gratuite ma in inglese)Raccolta dei lucidi proiettati a lezione (italiano)Guida sintetica di MATLAB (in italiano) (http://www.df.unipi.it/~ferrante/matlab.pdf)
SoftwareOctave per Windows (versione freeware simile alla versione base di MATLAB – stessi nomi per le funzioni)Scilab (migliore, ma con nomi differenti)
Per eventuali chiarimenti agli studentiAl termine delle lezioniPrevio appuntamento (e-mail a [email protected])
2
3
Organizzazione del CorsoIntroduzione a MATLAB Vettori e MatriciLa Grafica di MATLABProgrammare in MATLAB Calcolo NumericoMetodi Montecarlo e Fit Statistici…Analisi ed Elaborazioni di Segnali (Pilotaggio di Esperimenti e
Acquisizione di Dati Sperimentali)
4
Cos’è MATLAB?Il nome “MATLAB” sta per Matrix LaboratoryCos’è MATLAB ?
MATLAB® è un linguaggio per computazioni tecniche ad elevate prestazioni, che integra calcolo, visualizzazione e programmazione in un unico ambiente facile da usare dove problemi e soluzioni sonoespresse in notazioni matematiche standard. MATLAB è un sistema interattivo basato sull’uso di vettori e matrici (array) come “dati elementari”; tali matrici non richiedono di essere definite o dimensionate
Gli usi più comuni prevedono:Calcoli matematiciSviluppo di algoritmiAcquisizione dei datiModellizzazone, simulazione e studio/progetto di prototipiAnalisi di dati, esplorazione e visualizzazioneGrafica scientifica ed ingegneristicaSviluppo di applicazioni e/con interfacce grafiche utente.
3
5
Perché Calcolo Interattivo?1. Nei programmi di calcolo interattivo le operazioni da eseguire possono
essere immesse direttamente da tastiera ed eseguite istantaneamente.2. Rispetto ai programmi scritti con un linguaggio compilato (come C, C++,
fortran, etc), offrono il vantaggio di poter rapidamente capire qualisono le operazioni da effettuare sui dati, e poter visualizzareimmediatamente il risultato, evitando di dover compilare ed eseguireogni volta il programma da capo: questo rende più veloci le fasi discrittura dei programmi.
3. Svantaggi:a) i programmi prodotti risultano piu’ lenti di quelli scritti con linguaggio
compilato di basso livellob) non è possibile (solitamente) scrivere programmi in grado di funzionare al di
fuori del programma di calcolo interattivo utilizzato4. Di solito questi strumenti, e relativi linguaggi, vengono utilizzati nella
fase di prototipizzazione di un programma, o nella fase finale divisualizzazione dei risultati
5. Per le operazioni di calcolo su grosse quantità di dati rimane preferibilel’uso di un programma compilato.
6
Programmi di Calcolo Interattivo
Programmi utilizzati principalmente per il calcolosimbolico:
Mathematica Windows, Mac, LinuxMaple Windows, Mac, Linux
Programmi utilizzati principalmente per il calcolonumerico:
Matlab - commerciale - Windows, Mac, LinuxOctave - gratuito - Linux, (Windows)Scilab - gratuito - Linux, Windowsroot - gratuito - Linux, Mac, Windowspaw - gratuito - LinuxPer Linux si trovano molte altre possibilita’, come grace, R, etc..., etc….
4
7
Il sistema MATLABIl sistema MATLAB consta di 5 parti principali: Ambiente di Sviluppo, Libreria delle Funzioni Matematiche, il Linguaggio MATLAB, Funzioni Grafiche e l’Interfaccia MATLAB per programmi applicativi (API)Ambiente di sviluppo. Si tratta di un insieme di strumenti per utilizzare le funzioni ed i files di Matlab tramite delle interfacce grafiche utente. E’ formato dal Desktop di MATLAB e dalla CommandWindow, la Command History, l’Editor/Debugger, ed i browser per visualizzare gli help, il Workspace, la finestra con la directory corrente, ed il search path.
Libreria delle Funzioni Matematiche di MATLAB. Si compone di un gran numero di algoritmi computazionali che spaziano dalle funzioni elementari come SOMMA, SENO, COSENO e operazioni sul PIANO COMPLESSO, a funzioni più sofisticate come l’INVERSA di MATRICE,il calcolo degli AUTOVALORI, FUNZIONI di BESSEL e le TRASFORMATE di FOURIER VELOCI (FFT).
8
Il sistema MATLAB (cont.)Il linguaggio MATLAB. Si tratta di un linguaggio ad alto livello per operazioni su matrici/vettori con istruzioni (classiche) di controllo di flusso (if, switch, for, ecc.), funzioni, strutture di dati, input/output e supporto alla programmazione ad oggetti. Funzioni Grafiche. Una vasta libreria di funzioni grafiche consente di visualizzare vettori e matrici. E’ possibile visualizzare i dati in 2 o 3 dimensioni, è possibile elaborare tali immagini, creare animazioni e grafici per presentazioni. Interfaccia MATLAB per programmi applicativi (API). Si tratta di una libreria che permette di fare interagire programmiscritti in C o in Fortran con MATLAB. Comprende comandi per chiamare routines da MATLAB (collegamenti dinamici), chiamare MATLAB come “motore di calcolo” e per leggere e scrivere file .MAT
5
9
Una volta avviato MATLAB, si apre la finestra del desktop diMATLABE’ possibile cambiare la finestra in cui MATLAB si avvia, definire alcune opzioni di avvio, come lanciare una macro all’avvio, o ridurre il tempo di avvio (se necessario) in alcunesituazioni. Uscire da MATLAB
Per terminare la propria sessione MATLAB, selezionare ‘Exit MATLAB’ dal menu File sul desktop, o digitare “quit” nellaCommand Window.
MATLAB - Ambiente di SviluppoAvviare MATLAB
Windows: Cliccare sull’icona di MATLAB sul desktop UNIX: digitare matlab al prompt.
10
Il Desktop di MATLABIl desktop di MATLAB prevede:
La Command WindowLa finestra Command HistoryStart ButtonHelp BrowserCurrent Directory BrowserWorkspace Browser
Array Editor L’Editor/Debugger
6
11
E’ possibile modificarel’aspetto del desktop aprendo, chiudendo,
spostando o ridimensionando le finestre
in esso contenute
12
MATLAB Desktop – Classico
7
13
Command WindowViene utilizzata per definire variabili e lanciare funzioni ed M-files. Le operazioni di Input/output sulla finestra di comando possonoessere controllate dall’utente
La linea di comando di MATLAB è indicata da un prompt come in DOS: >>
Accetta dichiarazioni di variabili, espressioni e chiamate a tutte le funzioni disponibili nel programma.
Tutte le funzioni di MATLAB non sonoaltro che files di testo, simili a quelli chel’utente può generare con un text editor, e vengono eseguite semplicementedigitandone il nome sulla linea dicomando.
MATLAB permette inoltre dirichiamare le ultime righe di comandiinseriti usando le frecce in alto e in basso.
14
Help di MATLAB - 1MATLAB presenta un help in linea con informazioni sulla sintassidi tutte le funzioni disponibili.Se si conosce il nome della funzione, e si vogliono conosceredettagli sul suo funzionamento, basta digitare:
help nome
nome può essere un’istruzione o una directorySe è una istruzione help mostra le informazioni riguardo tale istruzioneSe è una directory help mostra la lista dei files in essa contenuti
Ad esempio:» help round
ROUND Round towards nearest integer.ROUND(X) rounds the elements of X to thenearest integers.See also FLOOR, CEIL, FIX.
8
15
Help di MATLAB - 2
È anche possibile avere un help di tutte le funzioni di una certa categoria; ad esempio per sapere quali sono le funzioni specifiche per l’analisi ed il processamento dei segnali, basta digitare:
help signal
Per sapere quali sono le varie categorie di funzioni disponibili, tra cui i cosiddetti toolbox, basta digitare:
help
16
Help di MATLAB - 3Un comando utile per trovare una funzionesconosciuta è lookforAltrimenti, andando nel menù help->help windowcompare una finestra in cui tutti i comandi e le funzioni sono raggruppati per categorie, con unabreve descrizione. Infine si può scegliere help desk:
questo comando aprirà il browser con la documentazionecompleta di matlabè la più esauriente, ma anche la più dispersiva.
9
17
MATLAB – Help Browser
18
Command History Window
Le istruzioni eseguite “a linea di comando” vengono ‘registrate’ nella finestraCommand History. In tale finestra, sonoinfatti visualizzate tutte le istruzioniprecedentemente eseguite, ed è possibilecopiarle ed eseguirle di nuovo
10
19
Per cercare, visualizzare, aprire e modificare le directory ed i file di MATLAB (o ad esso collegati) si può
utilizzare il Current Directory Browser.
Current Directory Browser
20
MATLAB – Search PATH !!!!Tutte le operazioni su files di MATLAB usano come punti diriferimento la current directory ed il search path. Qualsiasi file voglia essere eseguito DEVE trovarsi nella current directory o essere stato ‘registrato’ nel search path.I files forniti con MATLAB e con i toolbox di MathWorks sonogià inclusi nel search path.E’ possibile aggiungere al search path di MATLAB le directory che contengono i propri files. Per visualizzare le directory presenti nel search path o per variare l’attuale configurazione del search path, si puòselezionare Set Path dal menu File sul desktop di MATLAB, ed utilizzare la finestra del Set Path. In alternativa, si può utilizzare la funzione path per visualizzareil search path, il comando addpath per aggiungere una directory al search path, ed infine rmpath per eliminare una directory dalsearch path.
11
21
Il Workspace di MATLAB Il workspace di MATLAB è costituito dall’insieme di variabili (vettori) create durante una sessione di MATLAB e memorizzateSi aggiungono variabili al workspace ogni volta che si usa una funzione o si esegue un M-file con variabili globali, o si “caricano” workspace salvati sul disco.Per visualizzare il workspace e le informazioni riguardo ciascuna variabile si può utilizzare il Workspace Browser, o le funzioni who and whos.Per cancellare le variabili dal workspace, basta selezionare la variabile ed il comando Delete dal menu Edit oppure si può utilizzare il comando clearIl workspace non rimane in memoria quando viene chiusa una sessione di MATLABE’ però possibile salvarlo in un file che può essere richiamato in un’altra sessione di MATLAB selezionando Save Workspace Asdal menu File, o si può utilizzare il comando save.
22
Workspace Browser
12
23
The Array Editor
24
L’Editor/DebuggerSi usa per creare e/o fare il debug di M-file Gli M-file sono i programmi scritti dall’utente per eseguire le funzioni di MATLABTutte le funzioni di MATLAB sono M-fileGli M-file possono essere visualizzati e modificati utilizzando un qualsiasi editor di testoma l’Editor/Debugger fornisce in più unainterfaccia grafica sia come editor di testo siaper eseguire il debug di M-fileDigitando “edit nomefile” nella Command Window MATLAB apre automaticamente la finestra dell’Editor/Debugger e visualizzerà il file nomefile.m
13
25
Cos’è un M-file?
Se si devono eseguire più comandi in una volta sola, è possibilecreare una macro, ossia un file contenente tutte le istruzioniche si desidera eseguire.Per creare una macro, bisogna cliccare sul disegno della paginabianca, il primo a sinistra nella sbarra degli strumenti.Una nuova macro viene aperta all’interno dell’editore: sipossono scrivere i comandi, nell’ordine in cui si desideraeseguirli, e poi salvare.Per eseguire la macro, bisogna digitare il nome del file al prompt.Tutte le variabili create o modificate dalla macro sarannodisponibili alla fine dell’esecuzione.
Macro
26
Cos’è un M-file? (segue)
La differenza più evidente tra una macro ed una funzione sta nella sintassi: per eseguire una funzione bisogna dare un comando del tipo : y=func(x), oppure, più in generale,
[y1 y2 y3 …]=func(x1,x2,x3,…..)x1, x2, x3 … sono le variabili di ingressoy1, y2, y3…. sono le variabili in uscita: vengono create o modificate dalla funzione, e contengono il risultato delleoperazioni effettuate al suo interno. Tutte le altre variabilicreate dalla funzione vengono distrutte al terminedell’esecuzione.Una funzione inizia con una riga del tipo: function [y1,y2,y3… ]=func(x1,x2,x3,…) e termina con l’istruzionereturn.
Funzioni
15
29
VettoriUn vettore viene definito tra parentesi quadre
x = []Gli elementi delle righe si separano con spazi o virgole
x = [1 2 3 4] oppure x = [1, 2, 3, 4]Gli elementi delle colonne con punti e virgola (oppure andando acapo ad ogni elemento)
x = [1; 2; 3; 4] oppure x = [1234]
Ogni elemento del vettore può essere richiamato ponendo l’indicetra parentesi tonde (gli indici devono essere ≥1)
x(3) = 3Uno scalare è un vettore di dimensione 1x1MATLAB non visualizza il contenuto delle variabili sulla finestra di comando se terminate l’istruzione con un punto e virgola
30
Creazione ed IndicizzazioneVoglio creare un vettore composto di numeri interi da 1 a 10:
» x=[1:10]x =1 2 3 4 5 6 7 8 9 10
Voglio creare un vettore compreso tra 0 e 1 con spaziatura 0.2:» x=[0:0.2:1]x =0 0.2 0.4 0.6 0.8 1
Voglio creare un vettore di 6 elementi equispaziati a partire dal primo elemento 1 all’ultimo elemento 20:
» x=linspace(1,20,6)x =
1.0000 4.8000 8.6000 12.4000 16.2000 20.0000Voglio selezionare un sottoinsieme di un vettore
» indici=[1 4 5];» x(indici)
ans =1.0000 12.4000 16.2000
16
31
Operazioni tra/su vettori
Gli operatori disponibili sono:+,-,*,/,^ (somma, sottrazione, prodotto, divisione, elevamento a potenza)sin, cos, tanasin, acos, atanexp, log, log10abs, sqrt, sign
32
Esempi» x=[1 2 3 4 5];» y=[2 4 6 8 10];» z=x+yz =3 6 9 12 15
» y=[2 4 6 8 10 12];» z=x+y??? Error using ==> +Matrix dimensions must agree.
»» z=sin(x)z =0.8415 0.9093 0.1411 -0.7568 -0.9589
Posso sommare o sottrarre due vettori riga o colonna della stessadimensione: matlab somma elementoper elemento; mentre dà errore se le dimensioni sono differenti!
Posso calcolare espressioni comesin(x), exp(x), etc: matlab applical’espressione aritmetica ad ognisingolo elemento
17
33
Prodotto tra VettoriSe x e y hanno la stessa lunghezza, ma sono un vettore riga ed unocolonna, posso effettuare una ordinaria moltiplicazione riga * colonna utilizzando il simbolo *
» x=[1 2 3 4 5];» y=[2; 4; 6; 8; 10];» x*yans =110
Posso effettuare il prodotto di due vettori elemento per elementose questi hanno la stessa dimensione: si indica col simbolo .*
» y=[2 4 6 8 10];»» x.*yans =2 8 18 32 50
34
Prodotto tra Vettori (segue)Posso anche effettuare il “prodotto esterno”: in questo caso ottengo una matrice: nella pratica, basta porre prima il vettore colonna e poi ilvettore riga.
Mij = yi xj
» x=[1 2 3 4 5 ];» y=[2; 4; 6; 8; 10];» y*xans =2 4 6 8 104 8 12 16 206 12 18 24 308 16 24 32 4010 20 30 40 50
18
35
Altre Operazioni (esempi)Definiamo un vettore x:
x=[1 2 3 6 5 4];Vogliamo calcolare il massimo tra gli elementi del vettore x:
» M = max(x)M =6
Vogliamo calcolare il minimo tra gli elementi del vettore x:» m = min(x)m =1
Vogliamo selezionare alcuni elementi del vettore x che verificano una certa condizione:
» ind = find(x>4)ind =4 5
36
Altre Operazioni (esempi)
Definiamo un vettore x:x=[1 2 3 6 5 4];
Vogliamo ordinare in ordine crescente gli elementi del vettore x:» x_ord = sort(x)X_ord =1 2 3 4 5 6
Vogliamo sommare tutti gli elementi del vettore x:» S = sum(x)S =21
Length(x) dà il numero di elementi contenuti nel vettore (=6)Prod([1:n]) calcola il fattoriale di n (n!)
19
37
Numeri Complessi
L’unità immaginaria è i o j ed è predefinita(è quindi consigliabile non utilizzare i e j come variabili o indici nei cicli)Un numero complesso si scrive nella forma a+j*b
Es. z=2+j*3;Alcuni operatori applicabili ai numeri complessi:abs(z) calcola il modulo di zangle(z) calcola la fase di zreal(z) calcola la parte reale di zimag(z) calcola la parte immaginaria di z
38
MatriciAnalogamente ad un vettore, una matrice viene definita traparentesi quadre:
A = []Gli elementi delle righe vengono separati con spazi o virgole, e le diverse righe con punti e virgola (oppure andando a capo ad ogni nuova riga):
A = [1 2 3; 4 5 6; 7 8 9];oppure: A = [1 2 3
4 5 67 8 9 ];
Una volta definita, la matrice A viene memorizzata nelworkspace di MATLAB come la variabile A
20
39
Generazione di Matrici
Gli elementi hanno valori casuali a distribuzione normalerandnGli elementi hanno valori casuali uniformemente distribuitirandContiene tutti unoonesContiene tutti zerizeros
Alcuni esempi:
40
IndicizzazioneSia A = [1 2 3
4 5 67 8 9];
L’elemento amn è indirizzato come A(m,n): A(2,3) = 6La riga m-esima è indirizzata come A(m,:), dove tutte le colonne sono indicate dai due punti: A(2,:) = [4 5 6]La colonna n-esima è indirizzata come A(:,n), dove tutte le righe sono indicate dai due punti: A(:,3) = [3; 6; 9]La sottomatrice avente elementi amn con m1≤m≤m2 e n1≤n≤n2 è indirizzata come A(m1:m2,n1:n2):
A(1:2,2:3) = [2, 3; 5, 6]La funzione find adesso restituisce due indici, il primo per le righe, il secondo per le colonne:
[m,n]=find(A<0) dà m=[], n=[]Nota: in MATLAB gli indici partono sempre da 1
21
41
Indicizzazione (segue)E’ anche possibile richiamare gli elementi di una matriceutilizzando un solo indice, ossia A(k), come si fa per i vettoriIn questo caso la matrice viene considerata come un lungovettore colonna formato da tutte le colonne (una dopo l’altra) della matrice, ossia
k = pNrow+mdove Nrow è il numero di righe della matrice, p,m sono due interi con
p = 0,1,...,Ncol e m = 0,1,...,Nrow-1Esempio:
Posso selezionare il valore ’15’ della matrice A utilizzando le due notazioni equivalenti: A(8) o A(4,2).
42
Indicizzazione (segue)Se si richiama un elemento non contenuto in una matrice, MATLAB dàerrore. Esempio:
Se invece si definisce un elemento in più rispetto alla dimensione dellamatrice, la dimensione della matrice aumenta per dare spazio al nuovoelemento:
22
43
Cancellare Righe e ColonneSi possono cancellare righe e colonne da una matriceusando la coppia di parentesi quadre, ossia:
Sia
Per cancellare la seconda colonna di X digito:
X diventa:
44
Operazioni con MatriciGli operatori applicabili a matrici sono:
+ - * ^ / \ 'Trasposta
Divisione a sinistra:A\B=inv(A)*BDivisione a destra: B/A=B*inv(A)
Le matrici di uguale dimensione si possono sommare, sottrarre, moltiplicare per uno scalare o sommaread uno scalare con le stesse regole dei vettori.Attenzione: ricordarsi sempre che quando si fannooperazioni tra matrici è importante l'ordine deifattori:
A*B ≠ B*A
23
45
Operazioni con Matrici (segue)Posso moltiplicare una matrice (m x n) con una (n x l). Il risultato sarà una matrice (m x l)Es. Siano a=[1 2 3 ; 2 3 4] e b = [1 2 ; 3 4 ; 5 6]
a*b = 22 28 e b*a = 5 8 1131 40 11 18 25
17 28 39Posso moltiplicare una matrice (m x n) per un vettore colonna dilunghezza n: il risultato sara’ un vettore colonna di lunghezza mPosso moltiplicare un vettore riga di lunghezza n per unamatrice di dimensioni (n x m): il risultato sarà un vettore rigadi lunghezza m.L’operatore .* (punto seguito da asterisco) permette dieffettuare la moltiplicazione elemento per elemento di matricidi uguali dimensioni. Allo stesso modo funzionano ./ e .^A^2 indica invece il quadrato di una matrice effettuatomoltiplicando riga per colonna.
46
Operazioni su Matrici Sia a = [1 2 3; 1 4 9; 1 8 27]rank(a) da’ il rango della matrice
» rank(a)ans =3
Per matrici quadrate:det(a) da’ il determinantetrace(a) da’ la tracciainv(a) da’ l’inversa
» det(a) » inv(a)ans = ans =12 3.0000 -2.5000 0.5000
-1.5000 2.0000 -0.50000.3333 -0.5000 0.1667
24
47
Altre Operazionisum
sum(A) restituisce un vettore riga che contiene le somme degli elementi sulle colonne di A
48
Altre OperazioniLa matrice trasposta
Esempio:
25
49
Altre Operazionidiag
Esempio:
50
Operatori (Richiamo)Le espressioni usano i ben noti operatori aritmetici e le regole della precedenza aritmetica.
Esegue le operazioni *, ^, ecc. elementoper elemento
.* .^ ecc.
Trasposta Complessa Coniugata'Elevamento a Potenza^
Divisione a Sinistra\Divisione/Moltiplicazione*Sottrazione-Somma+
26
51
Concatenazione di MatriciLa concatenazione consiste nell’unire piccole matrici a formarne una piùgrande. L’operatore che consente di effettuare la concatenazione è la coppia diparentesi quadre [ ]
Data definisco
ottengo
52
Concatenazione di Matrici (segue)E’ possibile anche creare delle ‘Tabelle’:
Sia
Definisco:
27
53
MATLAB
Rappresentazione grafica dei dati
54
La Libreria Grafica
MATLAB offre una grande varietà dipossibilità per visualizzare vettori e matrici come graficiNel seguito descriveremo le più importanti
funzioni grafichePorteremo anche degli esempi di alcune
applicazioni tipiche
28
55
Creare un graficoPer creare un grafico si usa la funzione plot.La funzione plot assume diverse forme, in dipendenza dagli argomenti in ingressoSe y è un vettore, plot(y) fornisce una curva dei valori di y in funzione dell’indicedegli elementi di y. Se si specificano 2 vettori come argomenti in ingresso, plot(x,y) produce un graficodi y in funzione di x. Esempio:
Per aggiungere le labels
56
Più insiemi di dati in un unico graficoSi possono tracciare piùcurve su uno stesso graficoutilizzando la funzione plot con più argomentiMATLAB usaautomaticamente e ciclicamente una lista dicolori predefinita (ma modificabile dall’utente) per distinguere i diversi insiemidi datiIl comando legend permettedi identificare facilmente i vari grafici
29
57
Come Specificare Stili e ColoriE’ possibile specificare colori, stili e markers (come + oppure o) quando si usa il comando plot
color_style_marker è una stringa che contiene da 1 a 4 caratteri(compreso in un unico ‘ ’) formata da un tipo di colore, uno stile della linea, ed un tipo di marker
Le stringhe per i colori sono 'c', 'm', 'y', 'r', 'g', 'b', 'w', and 'k‘, checorrispondono rispettivamente a celeste, magenta, giallo, rosso, verde, blu, bianco, e neroStringhe per lo stile della linea sono '-' per continua, '--' per tratteggiata, ':' per “a punti”, '-.' per punto-linea. Non indicare lo stile della linea se non si vuole una lineaI tipi di markers sono '+', 'o', '*', e 'x','s' (square), 'd' (diamond), '^' (up triangle), 'v' (down triangle), '>' (right triangle), '<' (left triangle), 'p' (pentagram), 'h' (hexagram), e nulla se non si vuole il marker. Specificando il marker ma non la linea, MATLAB traccia solo ilmarker.
58
EsempiPlot(x,y,’ks’)traccia quadrati neri in ogni punto dei dati, ma non connette tali markers con una lineaPlot(x,y,’r:+’)traccia una linea “punteggiata” di colore rosso e pone un + in ogni punto deidatiPotreste voler usare menopunti per tracciare i markers di quanti ne utilizzateper le linee
30
59
Graficare Dati Immaginari e Complessi
Quando gli argomenti in input a plot sonocomplessi, la parte immaginaria viene ignorataQuando si dà a plot in ingresso un unico argomentocomplessoil comando grafica la parte immaginariain funzione della parte reale, ossia:
dove Z è un vettore o una matrice complessa
60
Aggiungere curve ad un grafico/finestra già esistente
Il comando hold consente di aggiungere curve ad un grafico già esistentehold on: il grafico esistente non viene cancellatoalla successiva chiamata a plot, ma aggiunge nuovidati al grafico corrente, riscalando gli assi se necessariohold off “rilascia” il graficoOgni chiamata a plot automaticamente apre unanuova finestra se non ci sono finestre già apertesullo schermo. Se una finestra di figura già esiste, MATLAB usaquella finestra per gli output grafici
31
61
Aggiungere curve ad un grafico/finestra già esistente (segue)
Se ci sono più finestre grafiche aperte, MATLAB usa quella designata come "figura corrente" (l’ultima usata) Per rendere finestra corrente una finestraesistente, si può cliccarci sopra col mouse o digitare figure(n), dove n è il numero della figurasul titolo. I risultati di grafici seguenti verrannovisualizzati in questa finestra. Per aprire una nuova finestra e renderla figuracorrente, digitare: figure
62
Grafici MultipliIl comando subplot permette di visualizzare piùgrafici in una stessa finestra o stamparli sullo stessofoglio:
subplot(m,n,p)divide la finestra della figura in una matrice mxn disubplots più piccoli e seleziona il p-esimo subplot per graficare quello che viene richiesto con un successivo comando di plot o similiI grafici sono numerati dalla prima riga in alto dellafinestra della figura, poi la seconda, e così via.
32
63
EsempioVoglio graficare i miei dati in 4 parti differentidella finestra della figura:
t = 0:pi/10:2*pi;[X,Y,Z] = cylinder(4*cos(t));subplot(2,2,1); mesh(X)subplot(2,2,2); mesh(Y)subplot(2,2,3); mesh(Z)subplot(2,2,4); mesh(X,Y,Z)
1 2
3 4
64
Gli AssiPer impostare la scala, l’orientazione e le proporzionidei grafici esiste il comando axisImpostare i limiti degli assi
Per default, MATLAB trova il massimo ed il minimo dei datiper selezionare i limiti degli assi su cui graficarliIl comando axis permette di specificare limiti diversi:
2D: axis([xmin xmax ymin ymax])3D: axis([xmin xmax ymin ymax zmin zmax])
Per riabilitare la selezione automatica dei limiti bastadigitare
axis auto
33
65
Altre proprietà della funzione axisProporzionare gli assi
dare agli assi x e y la stessa lunghezza:axis square
Impostare incrementi uguali sui due assi:axis equal
Per tornare alle condizioni di default (automatic mode)axis auto normal
Visibilità degli assiGli assi possono essere visibili o meno secondo i comandi:
axis on, axis offLe linee della griglia
Il comando grid commuta le linee della griglia on e off. grid on, grid off
66
Si usano i comandi xlabel, ylabel, and zlabelIl comando title aggiunge un titolo in alto sulla figuraLa funzione text permette di inserire testo ovunque sulla figura.Esempio:
t = -pi:pi/100:pi;y = sin(t);plot(t,y)axis([-pi pi -1 1])xlabel('-\pi \leq {\itt} \leq \pi')ylabel('sin(t)')title('Graph of the sine function')text(1,-1/3,'{\itNote the odd symmetry.}')
Labels e Titoli
34
67
Salvare una Figura
Per salvare una figura selezionare Save dal menu File sulla finestra della figura stessa. In questomodo verrà salvata come figure.fig e sarà possibileaprirla solo con MATLABPer salvare la figura utilizzando un diversoformato grafico, come TIFF, EPS, PDF, JPEG, per utilizzarla in altre applicazioni, selezionare Exportdal menu File nella finestra della figura.E’ anche possibile salvare le figure da linea dicomando utilizzando l’istruzione saveas, cheaccetta anche diverse opzioni per salvare la figurain formati differenti.
68
Grafici Mesh e Surface
MATLAB definisce una superficie tramite le coordinate z di un insieme di punti definiti su una griglia nel piano x-y, utilizzandolinee per connettere pounti adiacentiLe funzioni grafiche mesh and surf visualizzano le superfici in 3 dimensioni
mesh produce lo “scheletro” di una superficie con delle linee colorate.surf visualizza sia le linee di connessione sia le superfici più piccole daesse delimitate e colora entrambe
Per visualizzare una funzione di due variabili, z = f (x,y)Generare due matrici X e Y con le righe e le colonne (rispettivamente) ripetute a coprire tutto il dominio della funzioneUsare X e Y per valutare e graficare la funzione
La funzione meshgrid trasforma un dominio descritto da un vettore o due vettori x e y in matrici X and Y da poter essereutilizzate per valutare le funzioni in due variabili. Le righe dellamatrice X sono copie del vettore x e le colonne della matrice Y sono copie del vettore y.
35
69
Esempio di mesh
Grafichiamo la funzione sinc in due dimensioni, sin(R)/R, nelledue direzioni x e y. R è la distanza dall’origine, che si trova al centro della matrice[X,Y] = meshgrid(-8:.5:8);R = sqrt(X.^2 + Y.^2) + eps;Z = sin(R)./R;mesh(X,Y,Z,'EdgeColor','black')
Ho tolto l’indeterminatezza 0/0 nell’origine
Ho impostato un colore (nero) con cui graficare tutta la griglia