Professional Documents
Culture Documents
Matlab
Matlab I
Indice
INTRODUZIONE .....................................................................................................................1 1. Le finestre di Matlab ....................................................................................................................... 2 1.1 La Command Window .............................................................................................................. 3 1.2 La finestra Command History .................................................................................................. 4 1.3 La finestra Launch Pad ............................................................................................................ 4 1.4 La finestra Current Directory .................................................................................................. 4 1.5 La finestra Workspace ............................................................................................................. 5 1.6 LArray Editor.......................................................................................................................... 6 1.7 LHelp ...................................................................................................................................... 6 Gli m-file e la finestra Editor/Debugger ........................................................................................ 8 I commenti ..................................................................................................................................... 10 La gestione delle variabili ............................................................................................................. 10 4.1 Alcuni tipi di variabili ............................................................................................................ 10 4.2 Vettori e matrici ..................................................................................................................... 11 4.3 Alcune convenzioni particolari e comandi utili ..................................................................... 14 4.4 Il tipo STRUCT....................................................................................................................... 15 4.5 Salvataggio del workspace..................................................................................................... 15 4.6 Caricamento di un workspace salvato ................................................................................... 15 Principali operatori ....................................................................................................................... 16 5.1 Operatori aritmetici ............................................................................................................... 16 5.2 Operatori matematici ............................................................................................................. 16 5.3 Principali operatori su matrici e vettori ................................................................................ 18 5.4 Operatori relazionali e logici ................................................................................................ 20 Comandi di Programmazione ....................................................................................................... 22 6.1 Il comando if .......................................................................................................................... 22 6.2 I cicli ...................................................................................................................................... 23 6.3 Invio di testo formattato a schermo ....................................................................................... 25 6.4 Inserimento di dati da tastiera ............................................................................................... 25 6.5 Alcuni comandi utili ............................................................................................................... 26 Grafica ........................................................................................................................................... 27 7.1 La funzione Plot ..................................................................................................................... 27 7.2 Alcuni comandi utili ............................................................................................................... 28
2. 3. 4.
5.
6.
7.
Matlab II
Introduzione
MATLAB (MATrix LABoratory) un programma interattivo di calcolo scientifico e ingegneristico. un linguaggio di programmazione ad alto livello per la soluzione numerica di problemi ed il tracciamento di grafici, ed basato sullutilizzo di dati di tipo matriciale (scalari, vettori, matrici a due o pi dimensioni). Include diversi toolbox, ossia una collezione di file speciali detti m-file o file con estensione .m, che estendono le funzionalit del programma di base o nucleo. Matlab comunemente usato per: Calcoli matematici Sviluppo di algoritmi Modellazione e simulazione Analisi e visualizzazione di dati Grafici scientifici e ingegneristici Sviluppo di applicazioni incluso costruzione di interfacce grafiche. Matlab un programma case sensitive, cio sensibile alla differenza tra caratteri minuscoli e maiuscoli sia nei comandi che nel nome delle variabili.
Matlab 1
1. Le finestre di Matlab
Allavvio del programma appare la finestra mostrata in figura 1.
Launch Pad: tool disponibili Workspace: elenco delle variabili del workspace
Command Window
Current Directory: per visualizzare e modificare la directory corrente Command History: per visualizzare e riutilizzare i comandi gi inseriti figura 1 Finestra di default di Matlab
Linterfaccia grafica mostrata in figura 1 disponibile dalla versione 6 di Matlab. Nella release precedente (Mtalab 5.3) visualizzata soltanto la Command Window (figura 2).
Matlab 2
1.1
La Command Window
Utilizzare la finestra Command Window (figura 3) per inserire nuove variabili, eseguire operazioni di assegnazione a variabili esistenti, eseguire comandi e programmi (m-file). Il simbolo >> indica il prompt dei comandi dove possibile digitare listruzione da eseguire. Per esempio il comando ones(n) crea una matrice nxn composta da numeri 1. Se voglio eseguirlo devo digitare ones(numero) al prompt dei comandi digitare ones(4) per creare una matrice 4x4 composta da 1 >> ones(4) premere invio nella Command Window appare il risultato del comando; il programma visualizza la variabile ans (vedi cap.4 ) a cui stata assegnata una matrice 4x4 composta da numeri uno automaticamente appare nuovamente il prompt dei comandi pronto per un nuovo comando
figura 3 Finestra della Command Window
Per eseguire unoperazione di assegnazione digitare al prompt: >> a=3 la finestra visualizzer il valore della variabile a a= 3 >> la variabile a stata memorizzata nel workspace o spazio di lavoro. E possibile richiamare un comando precedentemente digitato ed eseguito semplicemente utilizzando i tasti freccia . Al prompt dei comandi appariranno i comandi eseguiti fino a quel momento che potranno quindi essere modificati e rilanciati premendo Invio. Matlab 3
Mettendo le prime lettere di un comando e premendo il tasto freccia , Matlab richiama al prompt tutti i comandi precedentemente utilizzati che cominciano con le lettere introdotte. 1.2 La finestra Command History
La Command History (storia dei comandi) (figura 4) contiene la sequenza di tutti i comandi eseguiti nella Command Window . E possibile rieseguire un comando semplicemente cliccandoci sopra due volte nella Command History, oppure cliccandoci sopra con il tasto destro e poi selezionando Evaluate Selection (valuta selezione).
Inizio sessione
1.3
Dalla finestra Launch Pad (tavoletta di lancio) (figura 5) possibile visualizzare delle demo, accedere alle finestre di help, e lanciare gli strumenti interattivi di tutti i prodotti Mathworks installati sul computer.
Accede direttamente alla documentazione del prodotto a cui lhelp collegato Visualizza una demo del prodotto a cui la demo collegata
1.4
La finestra Current Directory (figura 6) contiene gli strumenti per la gestione della directory di lavoro. E possibile selezionare la directory e visualizzarne il contenuto, effettuare ricerche con lapposito tasto tra i file presenti nella directory.
Matlab 4
I file visualizzati nella finestra possono essere aperti cliccandoci direttamente per due volte oppure cliccandoci con il tasto destro e selezionando una delle voci del menu che appare. Nella release anteriore alla 6, la directory di lavoro pu essere visualizzata e modificata attraverso il path browser (la directory di lavoro si trova nella casella in alto alla voce current directory), a cui si accede dal pulsante della finestra di comando.
Il contenuto della cartella di lavoro visualizzabile utilizzando il consueto pulsante oppure tramite il comando dir digitato nella Command Window. 1.5 La finestra Workspace
La finestra Workspace (spazio di lavoro) (figura 7) contiene linsieme delle variabili definite nella sessione di lavoro utilizzando i comandi, gli m-file o importando dati.
Cliccando due volte sul nome di un variabile possibile visualizzarne e modificarne il contenuto con lArray Editor. Nella versione anteriore alla release 6 la finestra Workspace si chiama Workspace Browser ed visualizzabile tramite il tasto nella barra degli strumenti.
Matlab 5
Le variabili contenute nel Workspace possono essere visualizzate anche direttamente nella Command Window tramite i comandi who e whos. Le istruzioni who, whos generano una lista delle variabili, semplice senza dettagli (who) o dettagliata specificando dimensione e tipo (whos). 1.6 LArray Editor
La finestra dellArray Editor (figura 8) pu essere utilizzata per visualizzare e modificare array mono e bidimensionali in formato numerico, stringa e vettori di celle contenenti dati tipo differente. E possibile modificare il valore di una cella cliccando direttamente al suo interno e inserendo il nuovo valore.
Nella versione 5.3 il contenuto della variabili visualizzato nella finestra Editor/Debugger che sar descritta nel seguito. 1.7 LHelp
La finestra di Help pu essere attivata dal Menu Help oppure premendo il pulsante
Ricerca di argomenti
comandi
Ricerca di testo
Matlab 6
E possibile ricercare comandi di Matlab o argomenti dal menu index. Dal menu search possibile ricercare del testo allinterno di tutte le pagine della guida.
Nella release precedente alla 6 la guida consultabile come pagina web (figura 10). Si accede alla guida dal menu Help, selezionando Help Desk (HTML).
Ricerca di argomenti
comandi
Ricerca di testo
E possibile consultare il contenuto della guida inerente un qualsiasi comando direttamente nella Command Window con listruzione help :
>> help nome_comando
Matlab 7
La finestra contiene alcuni pulsanti comuni a molti programmi che lavorano sotto il sistema operativo Windows. Il loro funzionamento uguale agli analoghi tasti presenti negli altri programmi. Per aprire un m-file esistente cliccare sul tasto quindi m-file. oppure scegliere Open dal menu File e
Anche in questo caso il file aperto nella finestra Editor/Debugger E possibile eseguire l m-file visualizzato nella finestra Editor/Debugger in pi modi: selezionando il comando Run dal menu Debug (oppure nel menu Tools per le versioni precedenti alla 6) premendo il tasto funzione della tastiera F5 premendo il pulsante sulla barra degli strumenti digitando il nome del m-file nella Command Window (ammesso che la cartella di lavoro sia quella in cui contenuto lm-file).
Si fa notare che in tutti i casi precedenti lm-file deve essere salvato, con tutte le modifiche eventualmente apportate, nella cartella in cui Matlab sta lavorando. Nella fase di debugging pu essere utile utilizzare i breakpoint, cio punti di interruzione che stoppano lesecuzione del programma al punto in cui stato posizionato il breakpoint stesso. Questo pu essere utile se vogliamo controllare il funzionamento del programma in Matlab 8
un determinato punto e non ci interessa controllare il funzionamento di tutte le istruzioni precedenti. Per inserire o togliere un breakpoint ci sono pi possibilit: Cliccare sulla linea di programma dopo il numero (solo a partire dalla versione 6) Utilizzare il tasto F12 Dal menu Breakpoints (oppure dal menu Debug per la versione 5.3) selezionare Set/Clear Breakpoint Posizionare il cursore sulla linea di programma e premere il pulsante
Breakpoint
Per eliminare tutti i breakpoint: Dal menu Breakpoints (oppure dal menu Debug per la versione 5.3) selezionare Clear All Breakpoint Premere il pulsante (solo a partire dalla versione 6)
Per scovare eventuali errori possibile eseguire lm-file riga per riga controllando il valore delle variabili durante lesecuzione di ogni riga di programma. Nel menu Debug ci sono a disposizione del programmatore alcuni strumenti molto utili per scovare eventuali errori. I tasti, le voci del menu Debug, i comandi equivalenti da digitare nella Command Window e la descrizione di questi strumenti sono riportati nella Tabella 1.
Tabella 1 Strumenti per il Debugging Pulsante Voce del menu Debug Descrizione Tasto funzione
Continua lesecuzione di un m-file fino alla fine o fino al prossimo Breakpoint. Il menu visualizza Run o Save and Run se il file non in esecuzione. Continua lesecuzione del file fino alla riga dove posizionato il cursore Esegue la riga corrente del file Esegue la riga corrente del file, se la riga una chiamata ad unaltra funzione passa ad eseguire riga per riga i comandi della funzione chiamata. Dopo lutilizzo dello Step in, esegue le rimanenti istruzioni della funzione e si arresta alla riga successiva alla chiamata della funzione.
F5
F10 F11
Step out
Shift + F11
Nellesempio di figura 13 lesecuzione si fermata alla riga 3 che deve essere ancora eseguita.
Per visualizzare il valore di una variabile sufficiente spostare il cursore sopra la variabile e automaticamente il programma ne visualizza il valore oppure si possono utilizzare i sistemi gi descritti nel capitolo 1.
3. I commenti
Il carattere % precede le linee di commento negli m-file. Tutto quello che in una riga segue il simbolo % viene ignorato dal programma e non viene eseguito. Le linee di commento cominciano con il segno %. Le linee di commento possono apparire ovunque in un m-file e possono essere attaccate alla fine di una riga del codice.
numero decimale di 64 bit (reale) vettore o matrice (array) composto da numeri di tipo DOUBLE carattere singolo vettore o matrice (array) composto da caratteri dato composto da pi campi di tipo eterogeneo( vedi Par. 4.4)
Una variabile pu essere creata semplicemente eseguendo un assegnazione direttamente nella Command Window oppure allinterno di un m-file Ad ogni assegnazione di un valore ad una variabile segue la visualizzazione del valore del risultato dellassegnazione: >> p=10 p= 10 >> Se loperazione di assegnazione seguita dal punto e virgola (;) non viene visualizzato il risultato delloperazione: >> p=10; >> Il carattere (;) posto dopo un qualsiasi comando sopprime linvio a schermo del risultato del comando stesso. Per assegnare una variabile di tipo Char (carattere) si devono utilizzare gli apici: >> c=h; c= h 4.2 Vettori e matrici
Per assegnare una nuova matrice : [ ] per racchiudere gli elementi della matrice spazio o virgola per separare gli elementi di una riga >>A=[1 2 3;4 5 6;7 8 9]; >>A=[1,2,3;4,5,6;7,8,9]; >> Invio o punto e virgola (;) per separare le colonne
>>A=[1 2 3 4,5,6 7,8 9]; >> Allo stesso modo pu essere creato un vettore. Un vettore infatti una matrice monodimensionale. >> vet=[1 2 3 4 5,6,7] vet = 1 2 3 4 5 >>
Matlab 11
Gli elementi di una matrice possono essere assegnati anche uno alla volta utilizzando gli indici che definiscono la posizione dellelemento allinterno della matrice e impiegando le parentesi tonde () al posto delle parentesi quadre []. Nel caso di vettori sufficiente utilizzare un solo indice per identificare la posizione allinterno del vettore. Gli elementi di una matrice possono essere utilizzati anche come variabili. Ad es. A(1,2) si riferisce allelemento posizionato sulla prima riga e seconda colonna della matrice A. vet(3) si riferisce al terzo elemento del vettore vet. Le dimensioni della matrice si adattano di volta in volta per accogliere il nuovo elemento. Seguono alcuni esempi delladattamento alle dimensioni, dellassegnazione di valori e del riferimento a elementi per vettori e matrici: >>a=[1 6 11 -6 8] a= 1 6 11 -6 8 >>a(4) ans = -6 >>a=3 a= 3 >> >> A(1,2)=10 A= 0 10 >> A(3,5)=21 A= 0 10 0 0 0 0 0 0 0 >>
0 0 0 0 0 21
>> A(3,4)=-2 A= 0 10 0 0 0 0 0 0 0 0 0 0 0 -2 21 >> >> A(3,4)+A(1,2) ans = 8 >> Lapice () loperatore per ottenere il trasposto di una matrice o vettore (vengono scambiate le righe con le colonne): >> a=[1 2 3 4] a= 1234 >>b=a Matlab 12
b= 1 2 3 4 >> Unione di matrici e vettori: >> A=[1 2 3;4 5 6;7 8 9]; >> V=[10 11 12]; >> A=[A;V] A= 1 2 3 4 5 6 7 8 9 10 11 12 >> Il carattere due punti (:) uno degli operatori pi utili. Ad es. pu essere utilizzato per creare vettori, selezionare elementi o definire intervalli. Loperatore due punti pu essere utilizzato per creare vettori equispaziati. j:k j:i:k per creare un vettore equispaziato; lo stesso di [j,j+1,...,k] per creare un vettore equispaziato con passo i ; lo stesso di [j,j+i,j+2i, ...,k]
Di seguito sono riportati alcuni esempi di utilizzo delloperatore : per la selezione di righe, colonne ed elementi di vettori o matrici. A(:,j) A(i,:) A(:,:) A(:,j:k) per estrarre la j-esima colonna della matrice A per estrarre la i-esima riga della matrice A equivalente ad A (tutta la matrice) equivalente a [A(:,j), A(:,j+1),...,A(:,k)]
Ad esempio: >>a=1:4; >>b=5:8; >>c=9:12; >>A=[a;b;c] A= 1 2 3 4 5 6 7 8 9 10 11 12 >>A(:,1) ans= 1 5 9 >>A(2,:) ans= 5678 >>A(1:2,2:3) ans= Matlab 13
23 67 >> Il carattere due punti (:) usato in generale per indicare una sequenza (creare un vettore) nella forma: inizio:passo:fine, oppure inizio:fine; in questultimo caso Matlab assume un passo unitario. >>a=1:4 a= 1234 >>a=1:0.5:4 a= 1 1.5 2 2.5 3 3.5 4 >> >>a=4:-0.5:2 a= 4 3.5.3 2.5 2 >> 4.3 Alcune convenzioni particolari e comandi utili
Alla variabile ans (answer=risposta) viene attribuito il risultato di una operazione se questo non espressamente assegnato ad una variabile: >>a=1; >>b=3; >>a*b ans= 3 >>ans ans=3 >> La variabile pi predefinita e vale >>d=4; >>circ=d*pi circ= 12.5664 >> I comandi who, whos generano una lista delle variabili del workspace, semplice senza dettagli (who) o specificando dimensione e tipo (whos). Se un comando genera pi di un risultato possibile assegnare direttamente i risultati del comando a diverse variabili. Ad esempio il comando max(vettore) restituisce il valore massimo di un vettore e la sua posizione allinterno del vettore stesso: >>c=[3 2 6 9 7 8]; >>[m,ind]=max(c) m= 9 ind= 4 >> Matlab 14
Per eliminare tutte le variabili dal workspace utilizzare il comando clear >>clear >> Per eliminare soltanto alcune variabili dal workspace utilizzare clear seguito dal nome della variabile da cancellare: >>clear X Y Z >> 4.4 Il tipo STRUCT
I dati di tipo STRUCT possono contenere dati di tipo differente. I campi del dato sono definiti con una assegnazione con la seguente sintassi: nome_variabile_struct.nome_campo=valore_del_campo Nellesempio definito il dato Utente_1 che contiene come campi i dati relativi al nome, cognome, telefono e indirizzo di una persona. >> Utente_1.nome='Leonardo'; >> Utente_1.cognome='Rossi'; >> Utente_1.telefono=0551234567; >> Utente_1.indirizzo='Via Pisana 10'; >> >> Utente_1 Utente_1 = nome: 'Leonardo' cognome: 'Rossi' telefono: 0551234567 indirizzo: 'Via Pisana 10' in questo caso i campi 1,2 e 4 sono vettori di caratteri (Char Array); mentre il campo 3 un numero (double) 4.5 Salvataggio del workspace
Per memorizzare lintero contenuto del workspace in un file con estensione .mat: save nomefile save save nomefile X Y Z per salvare tutto il workspace nel file nomefile.mat per salvare tutto il workspace nel file matlab.mat per salvare le variabili X, Y e Z nel file nomefile.mat
4.6
Le variabili precedentemente salvate in un file .mat possono essere lette da file con il comando load. load load filename load filename X Y Z legge il contenuto del file matlab.mat legge il contenuto del file filename o filename.mat legge soltanto le variabili specificate Matlab 15
5. Principali operatori
5.1 Operatori aritmetici
Tabella 2 Principali operatori aritmetici Simbolo Operatore
+ * / ^ .* .^ ./
Somma Sottrazione Moltiplicazione Divisione Elevamento a potenza Moltiplicazione elemento per elemento Elevamento a potenza elemento per elemento Divisione elemento per elemento
Il funzionamento delloperatore .* (e in generale di tutti gli operatori elemento per elemento) esemplificato dallesempio seguente: >>a=[1 2 3 4]; >>b=[2 3 4 5]; >>a*b (nota: prodotto righe per colonne secondo le convenzioni del calcolo matriciale) ans= 40 >>a.*b (nota: prodotto elemento per elemento) ans= 2 6 12 20 >> 5.2 Operatori matematici
Oltre ai basilari operatori aritmetici Matlab ha predefinite molte funzioni matematiche di uso comune. Le principali sono riportate di seguito.
calcola il coseno di ogni elemento di A calcola il seno di ogni elemento di A calcola la tangente di ogni elemento di A
Matlab 16
calcola lesponenziale di ogni elemento di A calcola il logaritmo naturale in (base e) di ogni elemento di A calcola il logaritmo in base 10 di ogni elemento di A calcola la radice quadrata di ogni elemento di A approssima ogni elemento di A allintero pi vicino troncamento di ogni elemento di A alla parte intera
>> A=[9.5013 6.0684 8.9130; 2.3114 4.8598 7.6210]; >> B=round(A) B= 10 6 9 2 5 8 >>B=fix(A) B= 9 6 8 2 4 7 >>
max(A)
se A un vettore, il risultato il valore massimo se A una matrice, il risultato un vettore contenente il massimo di ogni colonna
>> A=[4 8 -1 3 6 9 3]; >> max(A) ans = 9 >>A=[2 6 -1 7 3;2 6 9 3 6;3 7 9 8 2] A= 2 6 -1 7 3 2 6 9 3 6 3 7 9 8 2 >> max(A) ans = 3 7 9 8 6 >>
[b,ind]=max(A) calcola i valori massimi ed i relativi indici >> A=[4 8 -1 3 6 9 3]; >> [b,ind]=max(A) b= 9 ind = 6 >>
calcola il valore minimo, analogo al comando max calcola la parte reale di ogni elemento complesso della matrice A calcola la parte immaginaria di ogni elemento complesso della matrice A Matlab 17
>> z=[2+3*i 4-5*i] z= 2.0000 + 3.0000i 4.0000 - 5.0000i >> rz=real(z),iz=imag(z) rz = 2 4 iz = 3 -5 >>
conj(A)
>> z=[2+3*i 4-5*i] z= 2.0000 + 3.0000i 4.0000 - 5.0000i >> cz=conj(z) cz = 2.0000 - 3.0000i 4.0000 + 5.0000i >>
prod(A)
se A un vettore, il risultato il prodotto degli elementi, se A una matrice, il risultato un vettore contenente il prodotto degli elementi di ogni colonna
>> A=[4 8 -1 3 6 9 3]; >> prod(A) ans = -15552 >> sum(A) ans = 32 >>
sum(A)
se A un vettore, il risultato la somma degli elementi, se A una matrice, il risultato un vettore contenente la somma degli elementi di ogni colonna
5.3
Matlab mette a disposizione una serie di funzioni predefinite per la gestione delle matrici.
creano una matrice NxM o NxN con tutti gli elementi uguali a 1
Matlab 18
zeros(N,M), zeros(N)
creano una matrice NxM o NxN con tutti gli elementi uguali a 0 calcola lesponenziale di ogni elemento di A
rand(N,M)
genera una matrice NxM di numeri casuali compresi tra 0 e 1 con distribuzione uniforme
0.6154 0.7919
calcola gli autovalori della matrice A. Se si desidera calcolare anche gli autovettori assegnare il risultato delloperazione precedente a due matrici, la prima conterr gli autovettori , la seconda gli autovalori.
size(A)
sort(V)
ordina, in ordine decrescente, gli elementi di un vettore o ogni colonna di una matrice
[W,ind]=sort(V)
genera il vettore ordinato W e memorizza gli indici utilizzati per il riordino nella variabile ind
>> V=[3 6 1 0 5]; >> [W,H]=sort(V) W= 0 1 3 5 6 H= 4 3 1 5 2 >> V1=[-1 6 7 2 9]; >> V1(H) ans = 2 7 -1 9 6 >> 5.4 Operatori relazionali e logici
Un operatore relazionale, come dice la definizione stessa, un operatore che esegue unanalisi su gli operandi passati per argomento e restituisce come risultato uno dei due Matlab 20
valori booleani vero (1) o falso (0). Un operatore logico, invece, consente la combinazione di uno o pi valori booleani per darne uno nuovo. Gli operatori relazionali e logici sono riportati nella Tabella 3.
Tabella 3 Operatori relazionali e logici Simbolo Operatore
== < <= > >= = & | Ad esempio: >> a=1 a= 1 >> b=2 b= 2 >> risp=(a==b) risp = 0 >> risp=(a==a) risp = 1
Uguale Minore Minore o uguale Maggiore Maggiore o uguale Diverso And (e) Or (oppure) Not (non)
I valori restituiti dagli operatori logici, per le diverse combinazioni dei parametri in ingresso, sono mostrati nella Tabella 4.
Tabella 4 Definizioni degli operatori logici AND, OR e NOT
AND
VERO
VERO
FALSO
OR
VERO
VERO
FALSO
NOT
VERO
FALSO
VERO
FALSO
VERO
VERO
FALSO
VERO
FALSO
FALSO
FALSO
FALSO
VERO
FALSO
Alcuni esempi di istruzioni che coinvolgono operatori relazionali e logici: >> a=((2==2)&(3==3)) a= 1 >> b=((2==5)&(3>2)) b= 0 vero and vero
Matlab 21
vero or falso
not vero
6. Comandi di Programmazione
Matlab un eccellente ambiente di programmazione per lo sviluppo delle pi svariate applicazioni matematiche e non. Matlab ha predefiniti molti comandi utili alla realizzazione di programmi di ogni livello di complessit. I principali comandi necessari per la realizzazione anche del pi semplice programma sono riportati in questo capitolo. Difficilmente i comandi di programmazione vengono utilizzati direttamente la Command Window, in generale fanno parte di programmi scritti direttamente nelleditor di Matlab. 6.1 Il comando if
Listruzione per il controllo di flusso if consente allapplicazione di decidere, in base ad una condizione (tipicamente una operazione relazionale), se eseguire o no una certa istruzione. La sintassi di questa istruzione la seguente: if condizione, istruzioni1, end oppure (pi comunemente) if condizione istruzioni1 end Se la condizione vera vengono eseguite le operazioni contenute in istruzioni1, altrimenti si procede con listruzione che segue lend. Lesecuzione dellesempio di figura 15 produce come risultato la schermata: b= 4 a= 7 >>
Matlab 22
E possibile utilizzare anche due gruppi di istruzioni su condizione: if condizione istruzioni1 else istruzioni2 end Se la condizione vera vengono eseguite le istruzioni1, altrimenti vengono eseguite le istruzioni2. Dopo aver eseguito uno dei due gruppi di istruzioni, in entrambi i casi si procede alle istruzioni dopo lend. Nel caso di tre istruzioni utilizzare elseif: if condizione1 istruzioni1 elseif condizione2 istruzioni2 else istruzioni3 end Se la condizione1 vera vengono eseguite le istruzioni1. Se falsa ma la condizione2 vera vengono eseguite le istruzioni2. Se entrambe le condizioni sono false vengono eseguite le istruzioni3. In tutti i tre casi i casi si procede quindi alle istruzioni dopo lend. 6.2 I cicli
Per eseguire ripetutamente delle istruzioni per un numero determinato di volte possibile utilizzare un ciclo for. La sintassi la seguente: for variabile=inizio:passo:fine, istruzioni, end
oppure
for variabile=inizio:passo:fine istruzioni end Lesecuzione dellesempio di figura 16 produce come risultato la schermata: Matlab 23
a= 2 >>
mentre lesempio di figura 17 produce la schermata: a= 1.0000 0.5000 0.3333 0.2500 >>
Il ciclo while, invece, esegue un gruppo di istruzioni fino a quando una certa condizione vera: while condizione, istruzioni, end
oppure
while condizione istruzioni Matlab 24
end I comandi contenuti in istruzioni saranno eseguiti finch la condizione non diventer falsa. Lesempio di figura 18 produce la schermata: somma = 21 >>
6.3
Per inviare a schermo del testo formattato esiste un comando mutuato direttamente dal linguaggio di programmazione C. Il comando fprintf e consente vari tipi di output sia a schermo che su file. Per una descrizione del comando si rimanda allhelp di Matlab (oppure help fprintf dal prompt di comandi). Per gli scopi di questo corso sufficiente lutilizzo del comando per inviare a schermo del testo formattato. >> fprintf(' esempio \n di testo \n formattato \n con a capo ') esempio di testo formattato con a capo >> Nellesempio sopra riportato il simbolo \n rappresenta il ritorno a capo. 6.4 Inserimento di dati da tastiera
Per inserire dati da tastiera durante lesecuzione di un m-file utilizzare il comando input. Se i dati che verranno inseriti devono essere considerati come numeri: variabile=input(messaggio) Se i dati devono essere considerati come caratteri (stringa): variabile=input(messaggio,s) messaggio (tra i due apici) corrisponde al testo che verr visualizzato al Prompt per la richiesta dati la sua formattazione viene indicata analogamente al comando fprintf (si pu usare, ad esempio, il simbolo \n). >> a=input('Inserire il valore di a: ') Inserire il valore di a: 3 (in rosso rappresentato ci che viene inserito dallutente) Matlab 25
a= 3 >> 6.5
Alcuni comandi utili break interrompe un ciclo, se ci sono pi cicli annidati termina quello pi interno in cui si trova il comando. sospende lesecuzione di un m-file, lesecuzione riprende quando viene premuto un tasto della tastiera. Per sospendere lesecuzione per n secondi: pause(n). valuta una funzione precedentemente memorizzata come variabile stringa; eval produce lo stesso risultato che otterrei digitando nella Command Window il contenuto della variabile che passo al comando eval stesso.
pause
eval
Matlab 26
7. Grafica
Matlab uno strumento molto potente anche per la realizzazione di grafici. 7.1 La funzione Plot
Per riportare in un grafico un vettore o una matrice plot(y) visualizza il vettore y rispetto allindice dei suoi dati (figura 19) ploy(x,y) visualizza il vettore y rispetto al valore dei dati del vettore x (figura 20) >> clear >> x=0:pi/20:2*pi; >> y=sin(x); >> plot(y) >> plot(x,y)
plot(A)
>>A=rand(6) ; >>plot(A)
Sempre con il comando plot possibile modificare lo stile della curva: plot(x,y,stile) Matlab 27
nella tabella 5 sono riportate alcune opzioni per modificare il colore della curva e nella tabella 6 alcune opzioni per modificare la visualizzazione della curva:
tabella 5 Opzioni per impostare il colore Simbolo Colore
y m c r g b w k
-: -. . + * o x
linea continua (deafault) linea tratteggiata linea punteggiata linea tratto/punto soltanto punti segni pi segni asterisco cerchietti croci
Ad esempio:
>> x=0:pi/20:2*pi; >> f='sin(x)'; >> plot(x,eval(f),'r*') >> hold on >> plot(x,eval(f)*.8,'g*') >> plot(x,eval(f)*.6,'c--') >>
7.2
Alcuni comandi utili figure(N) clf hold apre la finestra grafica N o la attiva se gi esistente ripulisce la pagina grafica attiva
attiva e disattiva il mantenimento del grafico nella finestra grafica attiva hold on, hold off attiva (on) e disattiva (off) il mantenimento del grafico nella finestra grafica attiva axis([xmin xmax ymin ymax]) per modificare i limiti degli assi cartesiani title(titolo) xlabel(testo) specifica il testo da porre sopra il grafico specifica il testo da porre sullasse x Matlab 28
ylabel(testo) text(x,y,testo)
specifica il testo da porre sullasse y specifica il testo da porre nella posizione x,y del grafico
un esempio dellimpiego dei comandi appena descritti il seguente: >> emp=[30 31 38 49 59 68 74 72 65 55 45 34]; >>precip=[4.0 3.7 4.1 3.7 3.5 2.9 2.7 3.7 3.4 3.4 4.2 4.9]; >>month=['Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'dec']; >>plot(temp,precip,'ro') >>axis([28 80 2.5 5.2]) >>text(temp,precip,month) >>xlabel('temp') >>ylabel('precip') >>title('Boston') >>
figura 23 Esempio
subplot(n,m,p)
divide la pagina grafica in nxm sottopagine, attivando la p-esima per il grafico successivo
>> subplot(2,1,1) >> plot(temp,'r') >> xlabel('Month Number') >> ylabel('Temperature') >> title('Weather Data') >> subplot(2,1,2) >> plot(precip,'g') >> xlabel('Month Number') >> ylabel('Precipitation') >>
Matlab 29
aggiunge e toglie la griglia di riferimento al grafico corrente crea un diagramma a barre della variabile y nelle posizioni indicate dalla variabile x
Matlab 30
stairs(x,y)
Matlab 31
hist(y)
crea un istrogramma dividendo in 10 parti il campo tra il valore massimo e quello minimo di y
>> y=fix(10*rand (1,400000)); >> max(y),min(y) ans = 46 ans = -48 >> hist(y) >>
plot3(x,y,z)
mesh(x,y,A) surf(x,y,A)
rappresentazione mediante rete poligonale della matrice A. I vettori x ed y definiscono la rete. rappresentazione mediante patch della matrice A
>> A=rand(4,5); >> x=1:5; >> y=1:4; >> mesh(x,y,A) >> surf(x,y,A) >> Matlab 32
Matlab 33