POLITECNICO DI MILANO Facolt di Ingegneria Dipartimento di

  • Slides: 25
Download presentation
POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione INTRODUZIONE A MATLAB

POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione INTRODUZIONE A MATLAB Corso di Automatica Prof. Sergio BITTANTI Corso di Automatica - Introduzione a MATLAB

ORGANIZZAZIONE DELLA PRESENTAZIONE • • INTRODUZIONE A MATLAB DEFINIZIONE DI VARIABILI, MATRICI E VETTORI

ORGANIZZAZIONE DELLA PRESENTAZIONE • • INTRODUZIONE A MATLAB DEFINIZIONE DI VARIABILI, MATRICI E VETTORI FUNZIONI ELEMENTARI PER SCALARI E MATRICI POLINOMI VISUALIZZAZIONE DI GRAFICI NOTE GENERALI SU MATLAB (help, istruzione di ambiente. . . ) ALCUNE ISTRUZIONI PER APPLICAZIONI DI CONTROLLO UN ESEMPIO CONCLUSIVO Corso di Automatica - Introduzione a MATLAB

INTRODUZIONE A MATLAB • MATLAB (MATrix LABoratory) è un linguaggio di programmazione per applicazioni

INTRODUZIONE A MATLAB • MATLAB (MATrix LABoratory) è un linguaggio di programmazione per applicazioni scientifiche (elaborazione numerica dei segnali, progetto di simulatori, sintesi di sistemi di controllo, ecc. ) • MATLAB è un interprete di comandi. I comandi possono essere forniti interattivamente o contenuti in files su disco (M-files) • Comprende un vasto set di funzioni predefinite e numerose librerie (toolbox) per svariate applicazioni • Le potenzialità di MATLAB possono essere facilmente estese (è semplice creare nuovi toolbox) • E' possibile convertire un programma MATLAB in codice C e C++ in modo automatico Corso di Automatica - Introduzione a MATLAB

VARIABILI E ESPRESSIONI • All'avvio di MATLAB appare il prompt "» " • Vi

VARIABILI E ESPRESSIONI • All'avvio di MATLAB appare il prompt "» " • Vi sono due tipi di istruzioni: – assegnamenti “» variabile = espressione” – valutazione di espressioni “» espressione” • La valutazione di un'espressione genera una matrice che viene assegnata alla variabile indicata. Quando nell'istruzione non si specifica la variabile a cui assegnare il risultato, la valutazione dell'espressione viene assegnata alla variabile di sistema “ans”. • Se un’espressione non termina con “; ” il risultato della sua valutazione viene mostrato anche sullo schermo. Corso di Automatica - Introduzione a MATLAB

VARIABILI E ESPRESSIONI • Esempio: » 8+2 ans = 10 » a = 5*ans

VARIABILI E ESPRESSIONI • Esempio: » 8+2 ans = 10 » a = 5*ans a= 50 » b = 6+a; » b b= 56 • In MATLAB le variabili non devono essere dichiarate. La dichiarazione coincide con il primo assegnamento. • MATLAB è case-sensitive Corso di Automatica - Introduzione a MATLAB

DEFINIZIONE DI MATRICI • Una matrice può essere definita con la sintassi seguente: »

DEFINIZIONE DI MATRICI • Una matrice può essere definita con la sintassi seguente: » A = [7 8; 8. 9 7; 9 8] A= 7. 0000 8. 9000 7. 0000 9. 0000 8. 0000 » B = [1 2 3 4 5 6] B= 1 2 3 4 5 6 – uno spazio o una virgola delimitano gli elementi di un stessa riga – un punto e virgola o un cambio di riga indicano la fine di una riga • Sono presenti funzioni predefinite per la generazione di particolari matrici: – “zeros(n, m)” matrice di zeri – “ones(n, m)” matrice di uni – “eye(n, m)” matrice identità – “rand(n, m)” matrice di numeri casuali – “diag([a 11, a 22, a 33, . . . , a. NN])” matrice diagonale Corso di Automatica - Introduzione a MATLAB

DEFINIZIONE DI MATRICI • Per accedere agli elementi di una matrice: » A =

DEFINIZIONE DI MATRICI • Per accedere agli elementi di una matrice: » A = [7 8; 8. 9 7; 9 8] A= 7. 0000 8. 9000 7. 0000 9. 0000 8. 0000 » A(1, 2) ans = 8 » A(2, : ) ans = 8. 9000 » A(: , 1) ans = 7. 0000 8. 9000 9. 0000 – A(n, m) estrae l’elemento (n, m) della matrice A – A(n, : ) estrae l’n-esima riga della matrice A – A(: , m) estrae l’m-esima colonna della matrice A Corso di Automatica - Introduzione a MATLAB 7. 0000

DEFINIZIONE DI VETTORI • Un vettore può essere creato con la stessa sintassi utilizzata

DEFINIZIONE DI VETTORI • Un vettore può essere creato con la stessa sintassi utilizzata per le matrici oppure con le istruzioni: » x = 1: 6 x= 1 2 3 4 » x = 0. 5: 0. 1: 0. 9 x= 0. 5000 0. 6000 5 6 0. 7000 0. 8000 » x = linspace(-1, 1, 4) x= -1. 0000 -0. 3333 1. 0000 0. 9000 – a : [step : ] b crea un vettore riga di estremi a e b. Il parametro opzionale step indica l’intervallo tra ciascun elemento del vettore – linspace(a, b, N) crea un vettore riga di estremi a e b, costituito da N punti equispaziati Corso di Automatica - Introduzione a MATLAB

FUNZIONI ELEMENTARI PER SCALARI • Gli operatori aritmetici presenti in MATLAB sono: + (somma)

FUNZIONI ELEMENTARI PER SCALARI • Gli operatori aritmetici presenti in MATLAB sono: + (somma) , - (differenza), * (prodotto), / (quoziente), ^ (elevamento a potenza) • Funzioni matematiche elementari: – – – – abs angle conj exp real, imag log, log 10 sqrt valore assoluto di un numero complesso fase di un numero complesso coniugato esponenziale in base e parte reale e parte immaginaria di un numero complesso logaritmo naturale ed in base 10 radice quadrata • Funzioni trigonometriche – – sin, cos tan asin, acos atan seno, coseno tangente arco seno, arco coseno arco tangente • Le variabili i e j sono predefinite uguali alla radice quadrata di -1 Corso di Automatica - Introduzione a MATLAB

FUNZIONI ELEMENTARI PER SCALARI • Altre costanti predefinite: – pi – Inf – Na.

FUNZIONI ELEMENTARI PER SCALARI • Altre costanti predefinite: – pi – Inf – Na. N pigreco infinito Not a Number (generata da 0/0, o Inf/Inf) Corso di Automatica - Introduzione a MATLAB

FUNZIONI ELEMENTARI PER MATRICI • Gli operatori elementari sono: + , - , *

FUNZIONI ELEMENTARI PER MATRICI • Gli operatori elementari sono: + , - , * , / , , . *, . /, . ^ – L'operazione di somma o di sottrazione è definita tra matrici aventi le stesse dimensioni. Se uno dei due operandi è uno scalare, esso viene sommato o sottratto a tutti gli elementi della matrice. – X = B/A è la soluzione dell'equazione X*A = B – X = A B è la soluzione dell'equazione A*X = B –. *, . / e. ^ effettuano le corrispondenti operazioni sui singoli elementi delle matrici coinvolte. • Le funzioni matematiche elementari e trigonometriche, quando applicate alle matrici, si riferiscono ai singoli elementi della matrice • Principali operazioni matriciali: – Matrice trasposta A' – Matrice inversa inv(A) Corso di Automatica - Introduzione a MATLAB

FUNZIONI ELEMENTARI PER MATRICI – Determinante det(A) – Autovalori eig(A) – Polinomio caratteristico poly(A)

FUNZIONI ELEMENTARI PER MATRICI – Determinante det(A) – Autovalori eig(A) – Polinomio caratteristico poly(A) – Rango rank(A) – Dimensioni size(A) Corso di Automatica - Introduzione a MATLAB

POLINOMI • Un polinomio è rappresentato da un vettore riga che ne contiene i

POLINOMI • Un polinomio è rappresentato da un vettore riga che ne contiene i coefficienti in ordine decrescente delle potenze del polinomio medesimo Il polinomio 3 s 3 + 2 s + 8 si rappresenta come: » pol = [3 0 2 8] pol = 3 0 2 8 • Per ottenere gli zeri di un polinomio: » roots(pol) ans = 0. 6136 + 1. 3403 i 0. 6136 - 1. 3403 i -1. 2273 • Per valutare un polinomio in un punto: » polyval(pol, 1) ans = 13 Corso di Automatica - Introduzione a MATLAB

VISUALIZZAZIONE GRAFICI • La funzione plot produce grafici bidimensionali e può essere chiamata con

VISUALIZZAZIONE GRAFICI • La funzione plot produce grafici bidimensionali e può essere chiamata con diverse modalità • E' possibile rappresentare sullo stesso grafico più curve, impostare una griglia, impostare delle etichette per gli assi, ecc. . . • Esempio: » Tempo = [-30: 0. 1: 30]; » Tau = -5; » y = exp(Tempo/Tau); » z =300*sin(Tempo*pi/4); » plot(Tempo, y) » plot(Tempo, y, 'r', Tempo, z, 'y'), grid, title('ESERCIZIO') » plot(Tempo, y, 'r', Tempo, z, 'y: '), grid, title('ESERCIZIO') • Altre funzioni che consentono la visualizzazione di grafici 2 -D, sono: – loglog – semilogx – semilogy grafico logaritmico in x e lineare in y grafico logaritmico in y e lineare in x Corso di Automatica - Introduzione a MATLAB

VISUALIZZAZIONE GRAFICI – bar – stairs – mesh grafico a barre grafico a scala

VISUALIZZAZIONE GRAFICI – bar – stairs – mesh grafico a barre grafico a scala grafico 3 D • Altre funzioni di utilità sono – title, xlabel, ylabel, grid – axis, hold, clf, shg, subplot Corso di Automatica - Introduzione a MATLAB

ALCUNE ISTRUZIONI DI USO COMUNE • help richiama l’help in linea – help comando

ALCUNE ISTRUZIONI DI USO COMUNE • help richiama l’help in linea – help comando visualizza l’help relativo al comando indicato • who/whos elencano le variabili in uso • dir elenca i files contenuti nel direttorio corrente • clear all elimina tutte le variabili della sessione corrente – clear var 1 var 2 elimina le variabili var 1 e var 2 Corso di Automatica - Introduzione a MATLAB

ALCUNE ISTRUZIONI PER APPLICAZIONI DI CONTROLLO • impulse (num, den, t) calcola la risposta

ALCUNE ISTRUZIONI PER APPLICAZIONI DI CONTROLLO • impulse (num, den, t) calcola la risposta all’impulso del sistema la cui funzione di trasferimento è descritta dai polinomi num e den. t è il vettore che definisce il tempo • step (num, den, t) calcola la risposta allo scalino del sistema la cui funzione di trasferimento è descritta dai polinomi num e den. t è il vettore che definisce il tempo • lsim (num, den, u, t) calcola la risposta del sistema la cui funzione di trasferimento è descritta dai polinomi num e den all’ingresso u. t è il vettore che definisce il tempo • bode (num, den, w) calcola modulo e fase della funzione di trasferimento descritta dai polinomi num e den in corrispondenza delle pulsazioni specificate dal vettore w • bode (num, den) visualizza automaticamente il diagramma di modulo e fase della funzione di trasferimento descritta dai polinomi num e den Corso di Automatica - Introduzione a MATLAB

ALCUNE ISTRUZIONI PER APPLICAZIONI DI CONTROLLO • nyquist (num, den, w) traccia il diagramma

ALCUNE ISTRUZIONI PER APPLICAZIONI DI CONTROLLO • nyquist (num, den, w) traccia il diagramma di Nyquist della funzione di trasferimento descritta dai polinomi num e den in corrispondenza delle pulsazioni specificate dal vettore w • rlocus (num, den, k) traccia il luogo delle radici della funzione di trasferimento descritta dai polinomi num e den. k rappresenta il vettore dei guadagni • rlocus (num, den) traccia il luogo delle radici della funzione di trasferimento descritta dai polinomi num e den utilizzando un vettore dei guadagni determinato automaticamente Corso di Automatica - Introduzione a MATLAB

ALCUNE NOTE SUL TRACCIAMENTO DEI DIAGRAMMI DI BODE E NYQUIST • Il vettore delle

ALCUNE NOTE SUL TRACCIAMENTO DEI DIAGRAMMI DI BODE E NYQUIST • Il vettore delle pulsazioni w può essere definito mediante il comando logspace – logspace (wmin, wmax, N) definisce un vettore di pulsazioni tra wmin e wmax costituito da N punti • [m, f] = bode (num, den, w) restituisce i vettori del modulo e della fase della funzione di trasferimento in scala lineare. Prima di tracciare il diagramma di Bode il vettore m deve essere quindi convertito in d. B. • Per il tracciamento dei diagrammi di Bode di modulo e fase in scala semilogaritmica si utilizza la funzione semilogx • Esempio » num = [1 2]; den = [1 2 5]; » w = logspace(-1, 2, 100); » [m, f] = bode(num, den, w); » m = 20*log 10(m); » semilogx(w, m), grid, title(‘Diagramma del modulo’), xlabel(‘w’), ylabel(‘mod’) » semilogx(w, f), grid, title(‘Diagramma della fasa’), xlabel(‘w’), ylabel(‘fase’) Corso di Automatica - Introduzione a MATLAB

ESEMPIO • Si consideri il sistema descritto in figura, in cui la massa M

ESEMPIO • Si consideri il sistema descritto in figura, in cui la massa M è collegata alla parete da una molla di costante elastica Ke e da uno smorzatore con coefficiente di attrito viscoso Kv Ke Kv M u y • L’equazione che lega la forza u(t) applicata alla massa M e la posizione y(t) della massa M è Corso di Automatica - Introduzione a MATLAB

ESEMPIO • La funzione di trasferimento che lega la forza u allo spostamento y

ESEMPIO • La funzione di trasferimento che lega la forza u allo spostamento y della massa M è quindi • Siano M = 10 Kg, Ke = 0, 1 N/m, Kv = 0. 05 Ns/m • Vediamo ora come si possa utilizzare Matlab per ricavare i diagrammi di Bode e Nyquist della funzione di trasferimento, e la risposta all’impulso del sistema Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Implementazione MATLAB » % Definizione della funzione di trasferimento » num =

ESEMPIO - Implementazione MATLAB » % Definizione della funzione di trasferimento » num = 1; den = [10 0. 05 0. 1]; » » % Tracciamento del diagramma di Bode di modulo e fase » w = logspace(-2, 0, 1000); » [m, f] = bode(num, den, w); » m = 20*log 10(m); » semilogx(w, m), grid, title(‘Diagramma del modulo’), xlabel(‘w’), ylabel(‘mod’) » semilogx(w, f), grid, title(‘Diagramma della fase’), xlabel(‘w’), ylabel(‘fase’) » » % Tracciamento del diagramma di Nyquist » nyquist(num, den, w) » » % Tracciamento della risposta all’impulso del sistema » t = 0: 0. 1: 1000; » y = impulse(num, den, t); » plot(t, y), grid, title(‘Risposta impulsiva del sistema’), xlabel(‘t’), ylabel(‘y’) Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Diagramma di Bode Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Diagramma di Bode Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Diagramma di Nyquist Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Diagramma di Nyquist Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Risposta all’impulso Corso di Automatica - Introduzione a MATLAB

ESEMPIO - Risposta all’impulso Corso di Automatica - Introduzione a MATLAB