Introduzione A Matlab
Introduzione A Matlab
Introduzione A Matlab
Guido Vagliasindi
Introduzione a MATLAB
Documentazione
Sito web di Mathworks: www.mathworks.com seguendo i link alla voce support e possibile trovare 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 Control Toolbox Alberto Cavallo, Roberto Setola, & Francesco Vasca Liguori Editore, 1994
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
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Interfaccia MATLAB
History
Guido Vagliasindi
Introduzione a MATLAB
Help di MATLAB
E disponibile un aiuto in linea accessibile direttamente dalla riga di comando. Digitando help nella riga di comando vengono restituite tutte le funzioni. Digitando invece help nome_funzione viene restituita la sintassi duso della funzione e una descrizione della stessa. E possibile anche utilizzare lhelp di windows associato al programma MATLAB. Sono presenti vari esempi dimostrativi accessibili digitando demos nella riga di comando. Infine si pu utilizzare la funzione lookfor per cercare allinterno della descrizione delle varie funzioni una parola chiave.
Guido Vagliasindi
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 non hanno un corrispondente significato come operatori in MATLAB (praticamente solo lunderscore _). 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.
Guido Vagliasindi
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 variabili definite 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
Controlli Automatici A.A. 06/07 Introduzione a MATLAB
Guido Vagliasindi
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
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
MATRICI
Qualunque variabile considerata in MATLAB come una matrice, anche gli scalari e i vettori. In particolare uno scalare sar una matrice (1x1) mentre un vettore sar una matrice con una sola colonna (nx1) o con una sola riga (1xn). Una matrice pu essere inserita in MATLAB in diverse maniere:
a. b. c. d. assegnazione di lista di elementi generate da funzioni built-in create con un programma (m-file) caricate da file esterni (di dati)
Guido Vagliasindi
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 ciascuna riga. Racchiudere lelenco 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= A=[1 2 3 123 456 456 789 7 8 9] Se alla fine di ciascuna assegnazione metto un ; non c echo. Una volta fornita la matrice essa sar memorizzata nel workspace e richiamabile semplicemente digitanto A e invio nella CW.
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
MATRICI
b. Generate da funzioni built-in
Loutput 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.
MATRICI
d. Caricate da file esterni (di dati)
Ciascuna variabile contenute nel workspace possono essere salvate su disco con il comando save nome_file lista_variabili <opzioni> E possibile salvare tutto il workspace nel file nome_file.mat semplicemente con il comando save nome_file E possibile richiamare le variabili salvate precedentemente con un save o contenute in file di dati ottenuti attraverso altri programmi o acquisizioni con 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
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
MATRICI
E possibile accedere ai singoli elementi della matrice specificando la riga e la colonna. A(1,2) ans = 2 E possibile selezionare intere righe o intere colonne della matrice utilizzando la wildcard : A(1,:) A(:,2) ans = 1 2 3 ans = 2 5 8 E anche possibile selezionare porzioni di matrice con la seguente sintassi A(1:2,2:3) ans= 23 56
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 digitare help elfun per un elenco pi avanzato help specfun o help elmat Esistono anche funzioni pi complesse, realizzate tramite m-file e raccolte in forma di libreria dette toolbox. Per maggiori informazioni possibile visitare il sito http://www.mathworks.com e scaricare i manuali dei singoli toolbox.
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
Operazioni su matrici
Sono definite le normali operazioni aritmetiche: addizione + divisione / sottrazione moltiplicazione * elevamento a potenza ^
ADDIZIONE E SOTTRAZIONE Le operazioni si possono effettuare tra elementi della stessa dimensione ed elementi di dimensioni diverse. Esempio : A = [1 2 ; 2 1]; x = [1 2 3]'; y=x+1 B = [2 1; 1 2]; y=2 A-B A+B 3 ans = ans = 4 -1 1 33 1 -1 33
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]; B = [2 1; 1 2]; A*B ans= 4 5 5 4 A = [1 2 ; 2 1]; x = [1 2]; x*A ans 5 4 A = [1 2 ; 2 1]; a=2; a*A ans 2 4 4 2
Guido Vagliasindi
Introduzione a MATLAB
Operazioni su matrici
DIVISIONE Sia A invertibile (quadrata, non singolare): A\B equivale a: A-1B inv(A)*B B/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
Guido Vagliasindi
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 Loperatore di trasposizione di una matrice lapice . 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.
Guido Vagliasindi
Introduzione a MATLAB
Operazioni su matrici
ALTRE FUNZIONI det(A) eig(A) inv(A) rank(A) trace(A) poly(A) norm(A) size(A) Calcola il determinante della matrice A Calcola gli autovalori della matrice A Calcola linversa della matrice A Calcola il rango della matrice A Calcola la traccia della matrice A Calcola i coefficienti del polinomio caratteristico di A Calcola la norma della matrice A Calcola le dimensioni della matrice A
Guido Vagliasindi
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 loperatore : : 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
Guido Vagliasindi
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
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
Guido Vagliasindi
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 cui operano 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
Guido Vagliasindi
Introduzione a MATLAB
GRAFICA 2D
plot(y): produce un grafico lineare degli elementi di y in cui le ascisse sono lindice 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 x specificando 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 specificare una label per lasse x, lasse y e lintero grafico di
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 allelemento 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 (lasse x) semilogy(x,y): produce un grafico in scala semilogaritmica, con un solo asse logaritmico (lasse y) ginput: consente di risalire alle coordinate di un punto specifico
Guido Vagliasindi
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
Guido Vagliasindi
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, end m = sqrt(n) end Questo programma stampa indefinitamente la radice del numero introdotto finch non si scrive un numero minore o uguale a zero.
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
Controllo di flusso
Switch case switch variable case val1 istruzioni case val2 istruzioni case istruzioni otherwise istruzioni end
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
N ( s) G (s) = =K D( s)
(s + z )
i
(s + p )
i i =1
i =1 n
=3
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)
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB
sys=sys1-sys2
Guido Vagliasindi
Introduzione a MATLAB
sys=sys1-sys2
sys=sys1*sys2
Guido Vagliasindi
Introduzione a MATLAB
Feedback sys=feedback(sys1,sys2)
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
Introduzione a MATLAB
Guido Vagliasindi
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 e un 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
Guido Vagliasindi Controlli Automatici A.A. 06/07 Introduzione a MATLAB