Software per le Telecomunicazioni - uniroma2.it · Mathematica Windows, Mac, ... 9 Una volta...

35
1 Software per le Telecomunicazioni Docente: Ing. Dajana Cassioli Stanza 4187 – Dip. Ing. Elettronica Tel. 06 7259 7439 e-mail: [email protected] Università degli studi di Roma Tor Vergata a.a. 2005-2006 2 Info Materiale consigliato: Manuali Guide 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 ) Software Octave 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 studenti Al termine delle lezioni Previo appuntamento (e-mail a [email protected] )

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

14

27

Come appare l’Editor/Debugger

28

MATLAB

Vettori e Matrici

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