Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione “if” + Operatori logici in Matlab –Istruzione “for”Istruzione “for” –Istruzione “while”Istruzione “while” Considerazioni finali – File Batch
Programmazione – Files.m La struttura della programmazione in Matlab è analoga ad altri linguaggi di programmazione quali il Fortran, Pascal, etc. etc. Linguaggio procedurale Il programma è costituito da una serie di cicli e strutture condizionali, che possono essere conservati in un “m-file” Un “m-file” non è altro che un file di testo con l’estensione “.m” Elementi di Matlab - 22
Programmazione – Files.m Come creare (e scrivere) un file.m Ci sono due alternative: 1.Nei menu di Matlab si seleziona: File New M-File 2.Si digita il comando In entrambi i casi si dovrebbe aprire una finestra di testo tipica di Matlab Elementi di Matlab - 22 >> edit
Programmazione – Files.m All’interno del file è possibile scrivere le istruzioni in modo analogo alla scrittura sul display. Per salvare successivamente il file è sufficiente selezionare nel menu della finestra di testo: File Save As Richiamando il file (ovvero, digitando il nome del file, senza “.m”) è possibile eseguire le istruzioni nell’ordine con cui si sono scritte. Elementi di Matlab - 22
Programmazione – Files.m Come aprire un m-file creato precedentemente Anche in questo caso ci sono due alternative: –Nei menu di Matlab si seleziona: File Open –Sul prompt di Matlab si digita il comando: Elementi di Matlab - 22 >> edit nomefile.m
Programmazione – Files.m Esempio di m-file: Elementi di Matlab - 22 % Questo è il mio m-file % in cui si esegue la radice quadrata del % prodotto scalare di due vettori A = [1,3,5]; B = [4;4;6]; C = A*B; D = sqrt(C); disp(D) Queste sono righe di commento che posso scrivere nel mio m- file. Sono precedute dal carattere “%”. L’editore di testo di Matlab le scrive in verde Comando che consente la stampa su video dell’oggetto “D”
Programmazione – Files.m Esercizio Scrivere un m-file che mi consenta di –Diagrammare la funzione sen(x) nell’intervallo [0,2 ] –Nel file.m sarà necessario quindi: 1.Definire il vettore x 2.Definire il vettore y=sin(x) 3.Richiamare i comandi per la rappresentazione grafica Elementi di Matlab - 22
Programmazione – Files.m Le strutture condizionali ed i cicli in Matlab sono essenzialmente tre: if for while Elementi di Matlab - 22
Programmazione – Files.m - if Classica struttura del tipo: if-elseif-else if condizione1 comando1 elseif condizione2 comando2 else comando3 end Se si verifica la condizione1, esegui comando1, se no, se si verifica la condizione2, esegui comando2, se nessuna è verificata esegui comando3 Elementi di Matlab - 22
Programmazione – Files.m - if È possibile eseguire più elseif all’interno della stessa struttura condizionale Non appena Matlab incontra una condizione che è soddisfatta, esegue il comando ad esso relativo ed esce dalla struttura condizionale. Il comando dopo l’istruzione else finale può anche essere omesso. Elementi di Matlab - 22
Programmazione – Files.m - if La scrittura di una condizione in Matlab richiede la definizione di operatori logici Gli operatori logici in Matlab sono: maggiore =maggiore o uguale ==uguale ~=non uguale Sono operatori binari che restituiscono i valori 0 (falso) e 1 (vero) Esempio: Provare ad introdurre in Matlab 7>2 Elementi di Matlab - 22
Programmazione – Files.m - if Operatori booleani & (and) –Come nei programmi tradizionali è 1 se entrambi le condizioni sono 1, altrimenti è 0. | (or) –Come nei programmi tradizionali è 1 se almeno una delle condizioni è 1, altrimenti è 0. xor –Assume valore 0 se entrambi le condizioni sono 0 oppure 1. Altrimenti assume valore 1. Elementi di Matlab - 22
Programmazione – Files.m Operatori booleani Esempi: Le istruzioni precedenti potevano essere scritte anche con la sintassi and(4>2,3==3) e or(2>4,3==3) Elementi di Matlab - 22
Programmazione – Files.m - for Il ciclo for ripete una serie di comandi nel ciclo sino a che l’indice del ciclo non assume valori in un dato vettore colonna. Sintassi: for i=v, comando1 end Questo deve essere un vettore Il for ha sempre bisogno di un end alla fine della serie di istruzioni in comando1 Elementi di Matlab - 22
Programmazione – Files.m - for Esempio: for i=[1,2,3,4], disp(i^2) end Mostra sullo schermo (con il comando disp) i quadrati dei primi 4 interi L’istruzione del for poteva essere scritta, in modo più intuitivo: for i=1:4 comandi end Inizio ciclo for con scrittura indice Corpo dei comandi (ripetuta per ogni elemento del vettore v) Chiusura ciclo for Elementi di Matlab - 22
Programmazione – Files.m - for Le espressioni all’interno del ciclo possono pure non coinvolgere l’indice del ciclo. Esempio: x=6.0; for i=1:4, x=x/2; disp(x) end Inizio ciclo for con scrittura indice Corpo dei comandi (ripetuta quattro volte) Chiusura ciclo for Istruzione esterna al ciclo } Elementi di Matlab - 22
Programmazione – Files.m - while Il ciclo while (si chiude sempre con end) ripete la serie di comandi contenuta in esso, sino a quando la condizione non è più verificata Esempio: x=100 while x>5, x=x/2 disp(x) end } Inizio ciclo while con scrittura condizione Corpo dei comandi Chiusura ciclo while Istruzione esterna al ciclo Elementi di Matlab - 22
Programmazione – Files.m La creazione e l’esecuzione di un m-file scritto secondo la logica introdotta implica l’esecuzione di una serie di comandi come se fossero digitate sull’interfaccia principale In questo modo, qualunque variabile definita all’interno del file, è presente nella memoria centrale della sessione di Matlab Tale costruzione di m-file si chiama testo (o, per utilizzare una nomenclatura informatica, file batch) Elementi di Matlab - 22
Programmazione – Files.m Piccoli trucchi È interessante osservare che Matlab si presta ad una facile ispezione dei singoli passaggi del programma (tecnicamente parlando: debug) per individuare eventuali errori della scrittura. È sufficiente eseguire il programma, permettendo il display sul monitor delle istruzioni “sospette” Ci si può aiutare inserendo nelle righe il comando pause che arresta temporaneamente l’esecuzione e quindi può essere utile per individuare la posizione dell’errore. Elementi di Matlab - 22
Esercizio Scrivere un m-file che consenta di diagrammare la funzione y(x) nell’intervallo [0,12] con passo 0.01 tale che: y(x)=xper 0 < x <= 4 Y(x)=x^2per 4 < x <= 8 Y(x)=x^2*sin(x)/logxper 8 < x <= 12 Elementi di Matlab - 22