Seminario MATLAB Corso di Controlli Automatici A
• Concetti introduttivi
• Operatori logici
• Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
• Comandi di INPUT/OUTPUT
• Funzioni MATLAB
Schema della lezione
Seminario MATLAB Corso di Controlli Automatici A
Definizione di una matrice:
>> A=[ 1,5,3 ; 4,3,2; 3,1,9 ] ;
A= [ 1 5 3
4 3 2
3 1 9 ]
Concetti introduttivi
Lettura di un singolo elemento della matrice:
>> X= A (2,3)
X=2
Seminario MATLAB Corso di Controlli Automatici A•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)
Seminario MATLAB Corso di Controlli Automatici AVETTORI: 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
Seminario MATLAB Corso di Controlli Automatici A
Comandi del Control System Toolbox
• Rappresentazione nello spazio degli stati: comando ss
DuCxy
BuAxx
>> SYS = ss ( A, B, C, D )
• Rappresentazione mediante funzione di trasferimento: comando tf
85
62
)(
)()(
23
2
sss
ss
SDEN
sNUMsG
>> SYS = tf ( NUM, DEN) = tf ( [ 1,2,6], [1,1,5,8])
Seminario MATLAB Corso di Controlli Automatici A
Comandi del Control System ToolBox
)3)(2(
12)(
ss
ssG
• Rappresentazione ZERI-POLI-GUADAGNO: comando zpk
))...(2)(1(
))...(2)(1()(
PnsPsPs
ZmsZsZsKsG
>> SYS = zpk ( [Z1,Z2,..,Zm] , [P1,P2,…,Pn] , K )
ESEMPIO:
>> SYS = zpk ([-1] , [2,-3] , 2 )
Seminario MATLAB Corso di Controlli Automatici A
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.
Seminario MATLAB Corso di Controlli Automatici A
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 <=
Seminario MATLAB Corso di Controlli Automatici AMODO DI UTILIZZO :
>> RIS = A < B oppure RIS = 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 ]
Seminario MATLAB Corso di Controlli Automatici A
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
Seminario MATLAB Corso di Controlli Automatici A
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
Seminario MATLAB Corso di Controlli Automatici A
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
Seminario MATLAB Corso di Controlli Automatici AI 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
Seminario MATLAB Corso di Controlli Automatici A
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.
Seminario MATLAB Corso di Controlli Automatici A
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]
Seminario MATLAB Corso di Controlli Automatici A
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
Seminario MATLAB Corso di Controlli Automatici A
Costrutto SWITCHViene utilizzato quando il blocco di istruzioni da eseguire dipende dal valore di una certa variabile. Può essere sostituito da una serie di IF.
FORMATO:
SWITCH variabile
CASE (caso1)
blocco_istruzioni;
CASE (caso2)
blocco_istruzioni;
…….
OTHERWISE
blocco_istruzioni;
END
Seminario MATLAB Corso di Controlli Automatici A
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
Seminario MATLAB Corso di Controlli Automatici AIstruzione 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
Seminario MATLAB Corso di Controlli Automatici AISTRUZIONI DI INPUT-OUTPUT:
• INPUT
• FPRINTFINPUT: 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
Seminario MATLAB Corso di Controlli Automatici A
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