Introduzione a Matlab

48
 Guido Vagl iasi ndi Controll i Automat ici A. A. 06/07 Intr oduz ione a MATLAB INTRODUZIONE A

Transcript of Introduzione a Matlab

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 1/48

 

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

INTRODUZIONE A

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 2/48

 

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Documentazione

• Sito web di Mathworks:

www.mathworks.com

seguendo i link alla voce “support” e’ possibiletrovare i manuali di Matlab in formato pdf.

(http://www.mathworks.com/access/helpdesk/help/techd

oc/matlab.shtml)• Un testo in italiano di introduzione a matlab e

Simulink:

Guida Operativa a MATLAB, SIMULINK e ControlToolbox

 Alberto Cavallo, Roberto Setola, & Francesco Vasca

Liguori Editore, 1994

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 3/48

 

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

OUTLINE

• Descrizione generale di MATLAB

• Quadro delle funzioni predefinite• Definizione di matrici e vettori

• Definizione di polinomi

• Rappresentazione di sistemi dinamici lineari

• Analisi di sistemi di controllo

• Rappresentazione grafica dei dati

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 4/48Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Descrizione generale di Matlab

• MATrix LABoratory

• Software esplicitamente realizzato per manipolazione di

matrici

• Interattivo → Interprete di comandi

• Elemento base: matrice (che non richiede

dimensionamento)

• Sviluppato agli inizi degli anni '80, come sottoprodotto

dei progetti LINPACK ed EISPACK, da The MathWorks

Inc.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 5/48Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Interfaccia MATLAB

COMMAND WINDOW

History

Workspace

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 6/48Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Help di MATLAB

E’ disponibile un aiuto in linea accessibile direttamente dalla riga dicomando.

Digitando help nella riga di comando vengono restituite tutte le funzioni.

Digitando invece help nome_funzione viene restituita la sintassi d’usodella funzione e una descrizione della stessa.

E’ possibile anche utilizzare l’help di windows associato al programmaMATLAB.

Sono presenti vari esempi dimostrativi accessibili digitando demos 

nella riga di comando.

Infine si può utilizzare la funzione lookfor per cercare all’interno delladescrizione delle varie funzioni una parola chiave.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 7/48Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

VARIABILI

• MATLAB supporta nomi di variabili sino a 63 caratteri ed è case

sensitive.

• E’ possibile utilizzare lettere, numeri e i caratteri speciali che nonhanno un corrispondente significato come operatori in MATLAB

(praticamente solo l’underscore _). La variabile deve sempre

cominciare con una lettera.

• E' opportuno non utilizzare i nomi delle funzioni predefinite da

MATLAB, ciò comporta l'annullamento del significato prestabilito da

MATLAB per quella funzione e di conseguenza un messaggio di

errore.• Per assegnare una variabile non è necessaria una precedente

dichiarazione.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 8/48Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

VARIABILI

• Posso visualizzare il contenuto di una variabile inserendone

semplicemente il nome dalla riga di comando.

• Utilizzando la funzione who  viene restituita la lista di variabilidefinite nel workspace. La funzione whos  fornisce anche una

descrizione delle stesse indicandone anche la dimensione, il

numero di bytes occupati e la classe.

• Ans è una variabile di MATLAB dove viene memorizzato il risultato

di una eventuale operazione se non viene specificata una variabile

a cui assegnare il risultato.

• Variabili speciali: – eps = 2 -52 rappresenta l'accuratezza

 – ∞ (o Inf) infinito

 – NaN risultato di 0/0 (Not A Number)

 – piπ

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 9/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

VARIABILI

• Range: da 10-308 a 10+308

• Accuratezza: 16 cifre decimali

• Operatori: +, *, -, / (divisione destra), \ (divisione sinistra), ^

(elevamento a potenza)

• Uso "normale" delle parentesi per cambiare la priorità tra gli

operatori

• MATLAB consente l'uso di numeri complessi: si usa il simbolo "i" o"j" per indicare la parte immaginaria.

• La dichiarazione di variabili complesse avviene moltiplicando la

parte complessa per "i" o "j" e sommando la parte reale:

» z = 3+4*i; (niente spazi tra i termini)

N.B. E’ equivalente usare z=3+4i;

Tutte le funzioni MATLAB accettano variabili complesse come

ingressi

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 10/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

MATRICI

• Qualunque variabile è considerata in MATLAB comeuna matrice, anche gli scalari e i vettori. In particolare

uno scalare sarà una matrice (1x1) mentre un vettoresarà una matrice con una sola colonna (nx1) o con unasola riga (1xn).

• Una matrice può essere inserita in MATLAB in diversemaniere:

a. assegnazione di lista di elementi

b. generate da funzioni built-inc. create con un programma (m-file)

d. caricate da file esterni (di dati)

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 11/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

MATRICI

a. Assegnazione di lista di elementi

Bisogna:

• Separare gli elementi di una riga con spazi vuoti o virgole;

• Usare un punto e virgola “;” o un “invio” per indicare la fine di ciascunariga.

• Racchiudere l’elenco intero di elementi tra parentesi quadre

» A=[1 2 3; 4 5 6; 7 8 9]↵

» A=[1,2,3; 4,5,6; 7,8,9]↵

» A=[1 2 3↵

4 5 6↵

7 8 9]↵Se alla fine di ciascuna assegnazione metto un “;” non c’è echo.

Una volta fornita la matrice essa sarà memorizzata nel workspace erichiamabile semplicemente digitanto “A” e “invio” nella CW.

 A=

1 2 3

4 5 6

7 8 9»

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 12/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

MATRICI

b. Generate da funzioni built-in

L’output di alcune funzioni MATLAB è costituito da una matrice. Alcune

funzioni elementari che restituiscono una matrice come uscita sono: – eye(n,n) -> matrice identita’ nxn;

 – zeros(n,m) -> matrice di zeri nxm;

 – ones(n,m) -> matrice di uni nxm;

 – rand(n,m) -> matrice nxm con elementi distribuiti uniformemente tra

0 e 1.

c. Create con un programma

In MATLAB è possibile scrivere degli script  definiti m-files  checontengono al loro interno una sequenza di comandi elementari o

chiamate a funzioni che vengono poi interpretate da MATLAB come se

venisse scritta nella command window.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 13/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

MATRICI

d. Caricate da file esterni (di dati)Ciascuna variabile contenute nel workspace possono essere salvate sudisco con il comando

save nome_file lista_variabili <opzioni> 

E’ possibile salvare tutto il workspace nel file nome_file.matsemplicemente con il comando

save nome_file E’ possibile richiamare le variabili salvate precedentemente con un save ocontenute in file di dati ottenuti attraverso altri programmi o acquisizionicon i comandi

load nome_file lista_variabili <opzioni> load nome_file <opzioni> 

Per un dettaglio delle opzioni, digitare help load  e help save  nella

command window

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 14/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

MATRICI

• E’ possibile accedere ai singoli elementi della matrice specificando lariga e la colonna.

» A(1,2)

ans = 2 

• E’ possibile selezionare intere righe o intere colonne della matriceutilizzando la wildcard “:”

» A(1,:) » A(:,2)

ans = 1 2 3 ans = 2 5 8  

• E’ anche possibile selezionare porzioni di matrice con la seguentesintassi

» A(1:2,2:3)ans= 

2 3 

5 6 

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 15/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Funzioni in MATLAB

MATLAB prevede un gran numero di funzioni matematiche standard

• Funzioni trigonometriche (sin, cos, tan, acos, asin, atan…)

• Esponenziale e logaritmo (exp, log, log10, sqrt…)

• Numeri complessi (abs -> modulo, angle -> fase, real -> parte reale,imag -> parte immaginaria…)

Per un elenco delle funzioni matematiche elementari digitarehelp elfun 

per un elenco più avanzato

help specfun o help elmat 

Esistono anche funzioni più complesse, realizzate tramite m-file eraccolte in forma di libreria dette “toolbox”. Per maggiori informazioniè possibile visitare il sito http://www.mathworks.com e scaricare i

manuali dei singoli toolbox.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 16/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su matrici

Sono definite le normali operazioni aritmetiche:

• ADDIZIONE E SOTTRAZIONE

Le operazioni si possono effettuare tra elementi della stessa

dimensione ed elementi di dimensioni diverse.Esempio :

» A = [1 2 ; 2 1];

» B = [2 1; 1 2];

» A+B

ans =

3 3

3 3

addizione + sottrazione - moltiplicazione *

divisione / elevamento a potenza ^

» A-B

ans =

-1 1

1 -1

» x = [1 2 3]';

» y = x + 1

y = 2

3

4

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 17/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su matrici

• PRODOTTO

 Anche in questo caso ci possono essere diverse combinazioni.

Matrice * Matrice

Matrice * Vettore

Matrice * Scalare

» A = [1 2 ; 2 1];» x = [1 2];

» x*A

» ans

5 4

» A = [1 2 ; 2 1];» B = [2 1; 1 2];

» A*B

» ans=

4 5

5 4

» A = [1 2 ; 2 1];» a=2;

» a*A

» ans

2 44 2

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 18/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su matrici

• DIVISIONE

Sia A invertibile (quadrata, non singolare):

  A\B equivale a: A-1

B≡

inv(A)*BB/A equivale a: BA-1 ≡ B*inv(A)

Si usa nella soluzione di sistemi di equazioni lineari:

x = B/A soluzione di x*A = B

x = A\B soluzione di A*x = B

• ELEVAMENTO A POTENZA

Sia A matrice quadrata, p uno scalare (non necessariamente intero)

 A^p p-esima potenza di A ovvero A*A*A*.....*A se p intero

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 19/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su matrici

FUNZIONI TRASCENDENTI

• exp(A) e sqrt(A) eseguono rispettivamente l'esponenziale e la radice

quadrata dei singoli elementi si A

• expm(A), logm(A) e sqrtm(A) operano invece sulle matrici nella loro

globalità:

expm(A) ≡ I + A + A2/2 +...

sqrtm(A) ≡ A^(1/2)

TRASPOSIZIONE

L’operatore di trasposizione di una matrice è l’apice ‘. Se applicato ad

un vettore lo trasforma da riga a colonna e viceversa. Se applicato ad

una matrice a coefficienti complessi restituisce la matrice complessa

coniugata trasporta.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 20/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su matrici

ALTRE FUNZIONI

• det(A) Calcola il determinante della matrice A

• eig(A) Calcola gli autovalori della matrice A

• inv(A) Calcola l’inversa della matrice A

• rank(A) Calcola il rango della matrice A

• trace(A) Calcola la traccia della matrice A

• poly(A) Calcola i coefficienti del polinomio caratteristico di A

• norm(A) Calcola la norma della matrice A

• size(A) Calcola le dimensioni della matrice A

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 21/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Array o vettori

• I vettori hanno due funzioni fondamentali in Matlab:

 – rappresentazione dei polinomi (un polinomio è descritto dal vettore

dei suoi coefficienti);

 – rappresentazione di segnali (un segnale è rappresentato mediante

la sequenza dei valori che assume in un insieme di istanti di tempo,

quindi mediante un vettore).

• Possono essere definiti: – Con l’operatore ‘:’ : » v=(0:10) v =0 1 2 3 4 5 6 7 8 9 10

» v=(0:0.5:3) v =0 0.5 1 1.5 2 2.5 3

 – Come matrici riga o colonna: » v=[1 2 3] v =1 2 3

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 22/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni su array

• Finora gli operatori aritmetici visti agivano sulle matrici nella loro

globalità

• Le operazioni sugli array si riferiscono ad operazioni aritmetiche

eseguite elemento per elemento.

• Gli operatori su array si distinguono da quelli per matrici per il simbolo

"." prima dell'operatore (niente spazio tra punto e operatore)

• Addizione (.+) e sottrazione (.-) sono le stesse• Moltiplicazione (.*) e divisione (./ oppure .\) si differenziano:

» x = [1 2 3]; y = [4 5 6];

» z = x.*y

z= 4 10 18

» z = x.\y

z= 4 2.5 2

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 23/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni sui polinomi

Detto p un polinomio definito sotto forma di vettore pol=[1 2 5],

possiamo utilizzare le seguenti funzioni

• roots(pol): calcola le radici del polinomio

• polyval(pol,0): calcola il valore del polinomio in un punto

• conv(p1,p2): esegue il prodotto tra polinomi

• [Q,R]=deconv(p1,p2): calcola la divisione tra polinomi. Restituisce in Q

e R rispettivamente il quoziente e il resto.

• [R,P,K]=residue(p1,p2): calcola i residui, i poli e i termini diretti dellaespansione in fratti semplici del rapporto tra due polinomi p1 e p2.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 24/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operatori relazionali

• Operatori relazionali: <, <=, >, >=, ==, ~= (~ alt-126)

Operano una comparazione elemento per elemento. Il risultato è – 1 se il test è TRUE

 – 0 se il test è FALSE

• Operatori logici: & (and), | (or), ~ (not)

Consentono di combinare più operatori relazionali. Le variabili su cuioperano vanno considerate – TRUE se diverse da 0

 – FALSE se uguali a 0• I risultati sono

 – 1 se TRUE

 – 0 se FALSE

• >> a=(1>2) – a = 0

• >> a=(1<2) – a = 1

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 25/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

GRAFICA 2D• plot(y): produce un grafico lineare degli elementi di y in cui le

ascisse sono l’indice degli elementi di y

• plot(x,y): produce un grafico lineare di y rispetto a x

• plot(x,y,’colore_stile_marcatore’): produce un grafico di y rispetto a xspecificando il colore della linea, lo stile della linea e il marcatore per 

identificare gli elementi di y nel grafico

• plot(x1,y1,x2,y2,…,xn,yn): produce un grafico multiplo.• hold on : consente di aggiungere un tracciato ad un grafico

preesistente

• xlabel(‘string’), ylabel(‘string’), title(‘string’):  consentono di

specificare una label per l’asse x, l’asse y e l’intero grafico

• axis : consente di personalizzare la misurazione in scala e il rapporto

di aspetto tra i tracciati

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 26/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

GRAFICA 2D

• subplot(m,n,p):  permette di esporre grafici multipli sulla stessa

finestra. Si trasforma la finestra della figura in una matrice mxn e si

accede di volta in volta all’elemento specificato in p.

• loglog(x,y): produce un grafico in scala logaritmica di y rispetto a x

• semilogx(x,y): produce un grafico in scala semilogaritmica, con un

solo asse logaritmico (l’asse x)

• semilogy(x,y): produce un grafico in scala semilogaritmica, con un

solo asse logaritmico (l’asse y)

• ginput: consente di risalire alle coordinate di un punto specifico

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 27/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Controllo di flusso

• Cicli "for"

» for i = 1:n

for j = 1:n

 A(i,j) = i+j,end← metterli a fine ciclo!!!

end

» for i = 1:2:n←

incrementi di 2 ad ogni iterazione

• Cicli "while"

» while (condizione)

istruzioni;

end

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 28/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Controllo di flusso

• Operazioni condizionate... "if"» if (espressione)

istruzioni

elseif (espressione)istruzioni

else

istruzioni

end• Si può uscire in modo immediato da un ciclo con l'istruzione "break"

» while 1

n = input('scrivi un numero');

if n <= 0, break, endm = sqrt(n)

end

Questo programma stampa indefinitamente la radice del numero

introdotto finchè non si scrive un numero minore o uguale a zero.

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 29/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Controllo di flusso

• Switch case» switch variable

case val1

istruzionicase val2

istruzioni

case …

istruzioniotherwise

istruzioni

end

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 30/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Control System Toolbox

• E’ un insieme di funzioni per l’analisi di sistemi dinamici

(tipicamente lineari tempo invarianti LTI) e per la sintesi

di controllori.

• E’ possibile visionare tutte le funzioni della libreria

utilizzando help control . Tra queste funzioni andremo adanalizzare quelle preposte a:

 – Creazione di modelli LTI

 – Conversioni tra modelli – Analisi nel dominio del tempo

 – Analisi nel dominio della frequenza

 

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 31/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Creazione di modelli LTI

• Un generico sistema dinamico può essere rappresentato in varie forme:

 – State-space

 – Transfer-function

 – Zero-Pole-Gain

• MODELLI STATE-SPACE (SS)

Dato un sistema in forma di stato

le cui matrici sono

per creare il modello in MATLAB bisogna usare la funzione ss 

» sys=ss(A,B,C,D); 

⎩⎨⎧

+=+=

)()()()()()(t  Dut Cxt  yt  But  Axt  x

&

[ ] 0,10,10,

1101 ==⎥

⎦⎤⎢

⎣⎡=⎥

⎦⎤⎢

⎣⎡= DC  B A

 

C i di d lli LTI

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 32/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Creazione di modelli LTI

• MODELLI TRANSFER-FUNCTION

Dato un sistema in forma di stato rappresentato attraverso la relazione

ingresso-uscita, cioè la sua funzione di trasferimento

per creare il modello in MATLAB bisogna usare la funzione tf 

» num=[1 2]; 

» den=[1 0 2 4]; 

» sys=tf(num,den); 

Transfer function:s + 2

-------------

s^3 + 2 s + 4

42

2

...

...

)(

)()(

3

0

0

+++=

++++==

ss

s

asa

bsb

s D

s N sG

n

n

mm

 

C i di d lli LTI

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 33/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Creazione di modelli LTI• MODELLI ZERO-POLE-GAIN

Dato un sistema in forma di stato rappresentato attraverso la relazione

ingresso-uscita, cioè la sua funzione di trasferimento

per creare il modello in MATLAB bisogna usare la funzione zpk » K=3; 

» z=[-1]; 

» p=[-3 -5 -10]; 

» sys=zpk(z,p,K); 

Zero/pole/gain: 

3 (s+1)

------------------ 

(s+3) (s+5) (s+10)

)10)(5)(3(

)1(3

)(

)(

)(

)()(

1

1

+++

+=

+

+==

=

=

sss

s

 ps

 zs

K s D

s N sG

n

i

i

m

i

i

 

C i t d lli

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 34/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Conversione tra modelli

• Le funzioni precedentemente introdotte (ss,tf,zpk ) servono ancheper convertire un sistema da una forma all’altra.

Dato per esempio un sistema in forma di stato memorizzato nella

variabile sys , se vogliamo convertirlo in termini di funzione ditrasferimento posso scrivere

» sys1=tf(sys); 

• Le funzioni ssdata , tfdata , zpkdata  consentono di estrarre da unmodello LTI qualsiasi i dati caratteristici di una particolarerappresentazione:

» [A,B,C,D]=ssdata(sys); 

» [NUM. DEN]=tfdata(sys, ‘v’); » [Z,P,K]=zpkdata(sys, ‘v’); 

Dove il parametro ‘v’ da utilizzarsi per sistemi SISO specifica direstituire il risultato in forma vettoriale

 

O i i i d lli

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 35/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni sui modelli

sys=sys1+sys2 

sys=sys1-sys2 

 

O i i i d lli

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 36/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni sui modelli

sys=sys1+sys2 

sys=sys1-sys2 

sys=sys1*sys2 

 

O i i i d lli

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 37/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Operazioni sui modelli

 Altre funzioni utili che consentono di fornire alcune informazioni sulsistema espresso in qualunque delle rappresentazioni possibili:

• » P=pole(sys); 

Restituisce i poli del sistema memorizzato nella variabile sys • » Z=zero(sys); 

Restituisce gli zeri del sistema memorizzato nella variabile sys 

• » [P Z]=pzmap(sys); 

Calcola poli e zeri del sistema e li salva nei vettori P e Z

» pzmap(sys); 

Disegna la mappa dei poli e zeri del sistema

• » dcgain(sys); Calcola il guadagno statico del sistema sys 

• » [Wn, CSI]=damp(sys); 

Calcola smorzamento e pulsazione naturale dei poli del sistema

 

Interconnessione tra modelli

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 38/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

Interconnessione tra modelli

• Concatenazione

Orizzontale: sys=[sys1,sys2]  Verticale: sys=[sys1;sys2] 

• Feedback

sys=feedback(sys1,sys2)

 

Analisi nel dominio del tempo

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 39/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio del tempo

• L’analisi nel dominio del tempo comporta la valutazione dellarisposta del sistema agli ingressi canonici o di tipo generico

• Impulse – risposta all’impulso

» impulse(sys); Traccia la risposta ad impulso del sistema

» impulse(sys, Tend); 

Traccia la risposta all’impulso fino all’istante di tempo specificato in Tend

» impulse(sys,t); Traccia la risposta all’impulso utilizzando il vettore degli istanti di tempospecificato

» impulse(sys1, sys2,…,t); 

Traccia la risposta all’impulso di più sistemi mettendole a confronto» [Y,t]=impulse(sys); 

» [Y]=impulse(sys,t); 

Calcola la risposta all’impulso e salva il risultato nel vettore Y. Il vettore del

tempo può essere specificato come output o parametri di ingresso

 

Analisi nel dominio del tempo

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 40/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio del tempo

• step – risposta al gradino

» step(sys); 

Traccia la risposta ad un gradino del sistema

» step(sys, Tend); 

Traccia la risposta ad un gradino fino all’istante di tempo specificato in Tend

» step(sys,t); 

Traccia la risposta ad un gradino utilizzando il vettore degli istanti di tempospecificato

» step(sys1, sys2,…,t); 

Traccia la risposta ad un gradino di più sistemi mettendole a confronto

» [Y,t]=step(sys); » [Y]=step(sys,t); 

Calcola la risposta ad un gradino e salva il risultato nel vettore Y. Il vettore

del tempo può essere specificato come output o parametri di ingresso

 

Analisi nel dominio del tempo

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 41/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio del tempo

• Initial – evoluzione libera di un sistema

» initial(sys, X0); 

Traccia l'evoluzione libera del sistema a partire dalla condizione iniziale X0

» initial(sys, X0, Tend); 

Traccia l'evoluzione libera fino all’istante di tempo specificato in Tend

» initial(sys,X0, t); 

Traccia l'evoluzione libera utilizzando il vettore degli istanti di tempospecificato

» initial(sys1, sys2,…,X0,t); 

Traccia l'evoluzione libera di più sistemi mettendole a confronto

» [Y,t]=initial(sys,X0); » [Y]=initial(sys,X0,t); 

Calcola l'evoluzione libera e salva il risultato nel vettore Y. Il vettore del

tempo può essere specificato come output o parametri di ingresso

 

Analisi nel dominio del tempo

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 42/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio del tempo

• lsim – risposta ad un ingresso arbitrario

» lsim(sys,u,t); 

Traccia la risposta del sistema all’ingresso descritto dai vettori u e t.

» lsim(sys,u,t,X0); Traccia la risposta del sistema all’ingresso u specificando le condizioniiniziali del sistema per l’istante di tempo t(1). Quando non specificato lecondizioni iniziali sono considerate nulle

» lsim(sys1, sys2,…,u,t,X0); Traccia la risposta di più sistemi all’ingresso u mettendole a confronto

» [Y]=lsim(sys,u,t,X0); 

Calcola la risposta del sistema all’ingresso u e salva il risultato nel vettoreY.

» [Y,T,X]=lsim(sys,u,t,X0); 

Quando il sistema è di tipo SS restituisce anche la traiettoria dello stato,una matrice con tante righe quanti sono gli istanti di tempi e tante colonnequanti sono gli stati del sistema

 

Analisi nel dominio del tempo

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 43/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio del tempo

 Altre funzioni utili sono:

• ltiview

  Apre una interfaccia grafica per l’analisi della risposta nel tempo e in

frequenza• gensig

Funzione che genera segnali periodici per la simulazione della risposta nel

tempo con lsim

• stepfun

Consente di creare la funzione a gradino da utilizzare eventualmente con

lsim

 

Analisi nel dominio della frequenza

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 44/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio della frequenza

• bode – diagramma di Bode

» bode(sys); 

Traccia il diagrama di Bode (modulo e fase) del sistema.

» bode(sys,{wmin wmax}); Traccia il diagramma di Bode del sistema nell’intervallo di frequenzespecificato dai valori wmin e wmax

» bode(sys,w)

Traccia il diagramma di Bode alle frequenze specificate nel vettore w» bode(sys1,sys2,…,w); 

Traccia il diagramma di Bode di più sistemi mettendoli a confronto

» [MAG,PHASE]=bode(sys,w); 

» [MAG,PHASE,w]=bode(sys); Calcola il diagramma di Bode e salva in MAG e PHASE i vettori dei guadanie degli sfasamenti. Il vettore w può essere specificato come ingresso orichiesto come output

 

Analisi nel dominio della frequenza

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 45/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio della frequenza

• margin – margine di fase e di guadagno

» margin(sys); 

Traccia il diagrama di Bode (modulo e fase) del sistema indicando i margini

di fase e di guadagno

» [Gm,Pm,Wg,Wp]=margin(sys); 

Calcola il diagramma di Bode e salva il margine di guadagno e di fase in

Gm e Pm salvandone anche le frequenze in Wg e Wp.

 

Analisi nel dominio della frequenza

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 46/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio della frequenza

• nyquist – diagramma di Nyquist

» nyquist(sys); 

Traccia il diagrama di Nyquist del sistema.

» nyquist(sys,{wmin wmax}); Traccia il diagramma di Nyquist del sistema nell’intervallo di frequenzespecificato dai valori wmin e wmax

» nyquist(sys,w)

Traccia il diagramma di Nyquist alle frequenze specificate nel vettore w» nyquist(sys1,sys2,…,w); 

Traccia il diagramma di Nyquist di più sistemi mettendoli a confronto

» [RE,IMG]=nyquist(sys,w); 

» [RE,IMG,w]=nyquist(sys); Calcola il diagramma di Nyquist e salva in RE e IMG i vettori della partereale e immaginaria della risposta in frequenza. Il vettore w può esserespecificato come ingresso o richiesto come output

 

Analisi nel dominio della frequenza

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 47/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Analisi nel dominio della frequenza

• rlocus – luogo delle radici

» rlocus(sys); 

Traccia il luogo delle radici del sistema.

» rlocus(sys,k); 

Traccia il luogo delle radici del sistema utilizzando il vettore dei guadagni

specificato

» rlocus(sys1,sys2,…,k); 

Traccia il luogo delle radici di più sistemi mettendoli a confronto

» [RE,IMG]=rlocus(sys,k); 

» [RE,IMG,w]=rlocus(sys); 

Calcola il luogo delle radici e salva in RE e IMG i vettori della parte reale eimmaginaria dei rami del luogo. Il vettore k può essere specificato come

ingresso o richiesto come output

 

Altre funzioni

5/17/2018 Introduzione a Matlab - slidepdf.com

http://slidepdf.com/reader/full/introduzione-a-matlab-55ab58fc800ca 48/48

Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB

 Altre funzioni

• obsv(A,C)

restituisce la matrice di osservabilità per il sistema specificato

• ctrb(A,B)

restituisce la matrice di controllabilità per il sistema dato

• [Abar,Bbar,Cbar,T,K]=obsvf(A,B,C)

trasforma il sistema originario in uno equivalente in forma canonica

di osservabilità, restituendo anche la matrice di trasformazione T eun vettore la cui somma (sum(K)) restituisce il numero di stati

osservabili

• [Abar,Bbar,Cbar,T,K]=ctrbf(A,B,C)

trasforma il sistema originario in uno equivalente in forma canonica

di controllabilità, restituendo anche la matrice di trasformazione T e

un vettore la cui somma (sum(K)) restituisce il numero di stati

controllabili