210 likes | 347 Views
Schema della lezione. Concetti introduttivi Operatori logici Linguaggio MATLAB: costrutti tipici (IF,WHILE…) Comandi di INPUT/OUTPUT Funzioni MATLAB. Concetti introduttivi. Definizione di una matrice: >> A=[ 1,5,3 ; 4,3,2; 3,1,9 ] ; A= [ 1 5 3 4 3 2
E N D
Schema della lezione • Concetti introduttivi • Operatori logici • Linguaggio MATLAB: costrutti tipici (IF,WHILE…) • Comandi di INPUT/OUTPUT • Funzioni MATLAB
Concetti introduttivi Definizione di una matrice: >> A=[ 1,5,3 ; 4,3,2; 3,1,9 ] ; A= [ 1 5 3 4 3 2 3 1 9 ] Lettura di un singolo elemento della matrice: >> X= A (2,3) X=2
TRASPOSTA: • >> B=A’ ( oppure B=transpose(A) ) • B= [ 1 4 3 • 5 3 1 • 3 2 9 ] • DETERMINANTE: • >> X = det (A) • X = -140 • INVERSA DELLA MATRICE • >> B = inv (A)
VETTORI: matrici con una dimensione unitaria. VETTORE RIGA: a = [ 1, 2, 3] VETTORE COLONNA: a = [ 1 ; 2 ; 3 ] Generazione di un vettore di indici: I = Valore_Iniziale : delta : Valore_finale Esempio : >> I = 0 : 1 : 10 I = [ 0 1 2 3 4 5 6 7 8 9 10 ] Maggiori informazioni: Menu Help-> Help Window matlab\matfun
Rappresentazione nello spazio degli stati: comando ss >> SYS = ss ( A, B, C, D ) • Rappresentazione mediante funzione di trasferimento: comando tf >> SYS = tf ( NUM, DEN) = tf ( [ 1,2,6], [1,1,5,8]) Comandi del Control System Toolbox
Rappresentazione ZERI-POLI-GUADAGNO: comando zpk >> SYS = zpk ( [Z1,Z2,..,Zm] , [P1,P2,…,Pn] , K ) ESEMPIO: >> SYS = zpk ([-1] , [2,-3] , 2 ) Comandi del Control System ToolBox
Risposta all’impulso e al gradino del modello : • Comandi STEP e IMPULSE • 2 modi di utilizzo: • step ( SYS) => i tempi di campionamento vengono scelti automaticamente ; • step (SYS, T) => T definisce gli istanti di campionamento • T = Tiniziale: step : Tfinale ( vettore colonna ) • [ Y, T1 ] = step ( SYS , T) => non viene plottato il risultato, nella matrice ( o vettore) Y si ha l’andamento delle uscite mentre T1 contiene il vettore degli istanti di campionamento. • Plot( T1,Y) => visualizzazione dei risultati.
Operatori comparativi Forniscono un risultato di tipo BOOLEAN: VERO o FALSO. Si dispone di 6 operatori: UGUAGLIANZA : eq oppure == DISUGUAGLIANZA : ne oppure ˜= MINORE DI … : lt oppure < MAGGIORE DI .. : gt oppure > MAGGIORE O UGUALE: ge oppure >= MINORE O UGUALE.. : le oppure <=
MODO DI UTILIZZO : >> RIS = A < BoppureRIS = lt ( A,B ) A,B sono 2 matrici della stessa dimensione oppure o A o B scalare. Viene effettuata una comparazione elemento per elemento e viene ritornata la matrice RIS in cui ho 1 se VERO o 0 se FALSO. ESEMPIO: A = [ 2 2 2 2] B = [ 1 1 5 0 ] RIS = lt (A,B) => RIS = [ 0 0 1 0 ]
Operatori logici Operatori binari: FORMATO: RIS = operatore ( A , B) AND oppure & => VERO se entrambi diversi da zero OR oppure ! => VERO se almeno un valore diverso da zero XOR=>ritorna FALSO se i valori sono entrambi = 0 o diversi da 0 Operatori monari : FORMATO: RIS = operatore ( A ) NOT => VERO se il valore e’ uguale a 0, FALSE altrimenti. ANY => se A e’ un array ritorna VERO se tutti i valori sono diversi da 0 ALL => se A e un array ritorna VERO se almeno un valore e’ diverso da 0
Costrutti per la programmazione MATLAB • Vengono utilizzati per una programmazione evoluta • Molto simili ai costrutti del linguaggio C • MATLAB fornisce 4 costrutti fondamentali: • IF • FOR • WHILE • SWITCH
COSTRUTTO IF Viene utilizzato quando l’esecuzione di un certo numero di istruzioni e’ vincolata al soddisfacimento di una certa espressione logica. FORMATO COMPLETO: IF (espressione_logica) blocco_istruzioni; ELSE IF (espressione_logica) blocco_istruzioni; ELSE blocco_istruzioni; END
I blocchi ELSE IF ed ELSE sono opzionali. L’espressione logica deve ritornare un valore scalare. ESEMPIO: IF (Temperatura>25) ARIA_FREDDA=1; ELSE IF (Temperatura>20) ARIA_FREDDA=0; ARIA_CALDA=0; ELSE ARIA_CALDA=1; END
Costrutto FOR Il FOR viene utilizzato quando un gruppo di istruzioni deve essere ripetuto un determinato numero di volte. FORMATO: FOR INDICE = VALORE_IN: STEP: VALORE_FIN Blocco_istruzioni; END STEP = incremento del contatore ad ogni ciclo.
ESEMPIO: vogliamo generare un vettore a “RAMPA” I=1; FOR t=0: 0.1 : 5 Y(I) = t ; I=I+1; END Y diviene un vettore composto da 50 valori: Y= [ 0, 0.1 , 0.2 , 0.3 , 0.4 , …., 5]
Costrutto WHILE Viene utilizzato quando un gruppo di istruzioni deve essere ripetuto finche’ un’espressione logica risulta vera. Anche in questo caso l’espressione deve fornire un valore scalare. FORMATO: WHILE (espressione_logica) Blocco_istruzioni; END ESEMPIO: WHILE (Temperatura<25) ARIA_CALDA=1; END
Costrutto SWITCH Viene utilizzato quando il blocco di istruzioni da eseguire dipende dal valore di una certa variabile. Può essere sostituito da una serie di IF. FORMATO: SWITCHvariabile CASE (caso1) blocco_istruzioni; CASE (caso2) blocco_istruzioni; ……. OTHERWISE blocco_istruzioni; END
ESEMPIO: SWITCH (a) CASE (1) % se a=1 allora esegue queste istruzioni Y(1) = a; CASE(2) Y(1)=a-1; OTHERWISE Y(1)=0; END Menu Help->Help Window: matlab\lang
Istruzione BREAK Questa istruzione viene utilizzata per terminare un ciclo prima del previsto, si utilizza all’interno di cicli FOR o WHILE. ESEMPIO: for I=0:1000 a=controllo_temperatura(); if (a>2000) break; % esco dal ciclo for end stampa_temperatura(a); end
ISTRUZIONI DI INPUT-OUTPUT: • INPUT • FPRINTF INPUT: interazione con l’utente nello spazio di lavoro di MATLAB. Viene utilizzata per leggere valori immessi dall’utente VALORE = INPUT (‘ stringa di testo’ ); FPRINTF: viene utilizzata come in C per visualizzare nello spazio di lavoro il contenuto delle variabili. FPRINT (‘ stringa %x ’ ,valore ) %d = valore intero %f = valore floating
FUNZIONI MATLAB E’ possibile aggiungere alle funzioni già esistenti altre costruite da noi in modo da risolvere problemi specifici. Le variabili definite all’interno di una funzione sono LOCALI. FORMATO: FUNCTION [ output ] = nome_function ( input ) blocco_istruzioni; All’interno della function i parametri di output vengono settati e viene ritornato il loro valore al termine della funzione stessa. Non c’è bisogno di utilizzare il return come in C. Si creano come degli script e si salvano nel formato: nome_function.m