Introduzione a Matlab - Automazione@ingre · Introduzione a Matlab -- 3 Utilizzo di Matlab • Per...

37
Emilio Lorenzani Tel. 0522 522443 e-mail: [email protected] http://www.dismi.unimore.it/ CONTROLLI AUTOMATICI E SISTEMI ELETTRICI LINEARI Ingegneria Meccatronica CONTROLLI AUTOMATICI e SISTEMI ELETTRICI LINEARI INTRODUZIONE A MATLAB

Transcript of Introduzione a Matlab - Automazione@ingre · Introduzione a Matlab -- 3 Utilizzo di Matlab • Per...

Emilio Lorenzani Tel. 0522 522443

e-mail: [email protected] http://www.dismi.unimore.it/

CONTROLLI AUTOMATICI E SISTEMI ELETTRICI LINEARI Ingegneria Meccatronica

CONTROLLI AUTOMATICI e SISTEMI ELETTRICI LINEARI INTRODUZIONE A MATLAB

Introduzione a Matlab -- 2

Organizzazione della parte di corso tenuta da Emilio Lorenzani

Utilizzo di Matlab e Simulink (toolbox di Matlab): - Modellizzazione di un sistema fisico - Sintesi e analisi del controllo di macchine elettriche Verifica delle prestazioni dell’azionamento elettrico, attraverso la simulazione numerica.

- 6 ore di introduzione a Matlab all’inizio del corso

- Sintesi del controllo di macchine elettriche alla fine del corso

Introduzione a Matlab -- 3

Utilizzo di Matlab

• Per il corso di Controlli Automatici e Sistemi Elettrici Lineari • Strumento software per la testare i concetti appresi a lezione e per

la verifica degli esercizi svolti a lezione • Modellizzazione di sistemi fisici e individuazione del miglior

controllore per massimizzare le prestazioni

• Come Ingegneri

• Ambiente di sviluppo software utilizzato nelle aziende per la modellistica, il progetto di sistemi di controllo, per la loro implementazione e per il loro sviluppo completo.

Introduzione a Matlab -- 4

Matlab

Matlab è un programma per l'analisi numerica e la simulazione di sistemi dinamici. • Analisi: Modellizzazione e analisi del comportamento dei sistemi dinamici

• Sintesi dei sistemi di controllo: ci sono delle funzioni che possono essere utilizzate per la sintesi di controllori

• Simulazione: E’ possibile verificare le prestazioni di un sistema simulandone il comportamento

• Programmazione: E’ possibile sviluppare algoritmi utilizzando i costrutti messi a disposizione per la programmazione

• Grafici: Consente di analizzare e visualizzare graficamente dati di interesse

Introduzione a Matlab -- 5

MATLAB – area di lavoro

Come calcolare 2 − sin 0.2𝜋 2 + 𝑒2 + 3 ? >> sqrt(2)-sin(0.2*pi)^2+exp(2)+3 ans=12.4578

linea di comando

Visualizzazione variabili

Introduzione a Matlab -- 6

MATLAB

• Matlab (MATrix LABoratory) è un software per il calcolo scientifico sviluppato inizialmente per la gestione ed elaborazione di vettori e matrici.

Per introdurre una variabile basta assegnarle un nome e un valore in questo modo (il simbolo = permettere di assegnare un valore ad una variabile):

>> x=12

La variabile x vale 12. Omettendo il ; viene riscritto a video il nome della variabile e il suo valore. Se si digita soltanto un valore e non lo si assegna a una variabile, Matlab assegna di default tale valore alla variabile ans

MATLAB fa differenza tra lettere minuscole e maiuscole.

Introduzione a Matlab -- 7

Matlab

Matlab è un ambiente a riga di comando: quando si apre il programma ci si trova a un prompt dal quale possibile immettere un comando.

In Matlab qualsiasi dato è trattato come una variabile.

Esempio dichiarazione variabili: >> a=5 %variabile scalare >> b=[4 6] %vettore riga >> c=[-5; 2] %vettore colonna >> d=[2 3; -1 7] %matrice quadrata separatore di linea: punto e virgola (;) o Enter Separatore di colonna: virgola (,) o spazio bianco

Non occorre dichiarare preliminarmente le variabili

Introduzione a Matlab -- 8

MATLAB

Esso contiene un nucleo di funzioni di base general purpose molto vaste …tutte le funzioni matematiche, comandi grafici, risoluzione sistemi di equazioni, ecc…

HELP di MATLAB è fondamentale!! Esistono, poi delle estensioni, i Toolbox, che consentono di estendere le funzionalità del programma base, aggiungendo strumenti specialistici.

Durante il corso impareremo a utilizzare il programma sia per l'Analisi di sistemi dinamici sia per la Sintesi di sistemi di controllo.

Introduzione a Matlab -- 9

Matlab

• Le variabili immesse dal prompt costituiscono il workspace (spazio di lavoro) di Matlab.

• Per sapere quali sono le variabili presenti nel workspace in un dato

momento si utilizza il comando who ( whos per sapere tipo variabile ed occupazione di memoria)

• Per cancellare una variabile dal workspace si utilizza il comando clear

<nome variabile> • Per cancellare tutte le variabili dal workspace si utilizza il comando

clear all

• save <nome> per salvare il contenuto del workspace • load <nome> per caricare in memoria dati precendemente

memorizzati

Introduzione a Matlab -- 10

Vettori e Matrici

Possiamo definire una matrice con la seguente sintassi:

>> A=[1,2,3,4;5,6,7,8;9,10,11,12]

Gli elementi della stessa riga sono separati da , mentre le varie righe Dal ;. La virgola può anche essere omessa. E’ possibile estrarre da una matrice un singolo elemento oppure una sottomatrice.

>> element = A(1,2) associa alla variabile element il valore dell'elemento di riga 1 e colonna 2 della matrice A. In particolare sarà element=2

>> subA = A(1:3,1:2) associa alla variabile subA la sottomatrice composta dalle prime 3 righe e dalle prime 2 colonne. In particolare sarà subA=[1,2;5,6;9,10];

Introduzione a Matlab -- 11

Vettori e Matrici

Un vettore è una particolare matrice.

• >> c=[4;5;6]; • >> r=[4,5,6];

Vettore colonna

Vettore riga

Si può far generare a Matlab un vettore automaticamente.

>> t=[0:0.1:10]

Il comando genera un vettore riga con valori che vanno da 0 a 10 con passo 0.1.

Si può operare con le variabili: costruire una variabile utilizzando i valori memorizzati in altre variabili, costruire vettori con variabili scalari, oppure matrici con vettori e altri matrici, ecc…

I vettori vengono utilizzati per rappresentare segnali o per la tracciatura di grafici

Introduzione a Matlab -- 12

Operazioni sui vettori

» a=[ 1, 2] % vettore riga 1x2 » b=[ 3 ; 4] % vettore colonna 2x1 » c= a*b % moltiplicazione riga per colonna, c risulta uno scalare » c=b*a % moltiplicazione riga per colonna, c una matrice 2x2 » a1= [5, 6] % vettore riga 1x2 » A=a .* a1 %Prodotto elemento per elemento » B=a.^2 %Quadrato elemento per elemento

Introduzione a Matlab -- 13

Vettori e Matrici

>> c1 = A(:,2) associa alla variabile c1 la seconda colonna della matrice A. In particolare sarà c1=[2;6;10]

>> r1= A(1,:) associa alla variabile r1 prima riga della matrice A. In particolare sarà r1=[1,2,3,4];

Possiamo estrarre vettori riga e vettori colonna da una matrice.

Introduzione a Matlab -- 14

Vettori e Matrici

Esistono comandi che generano automaticamente alcune matrici notevoli

A=eye(n); A è la matrice indentità di ordine n

A=zeros(n); A è una matrice quadrata di ordine n

i cui elementi sono zero

A=ones(n) A è una matrice quadrata di ordine n i cui

elementi sono uno

Introduzione a Matlab -- 15

Operatori comparativi

In Matlab il valore 0 rappresenta il valore booleano FALSE mentre tutti gli altri valori numerici rappresentano il valore booleano TRUE.

Si dispone di 6 operatori:

Se l'espressione è vera ritorna un 1 altrimenti 0.

Un paragone tra due matrici viene eseguito elemento per elemento.

Esempio a=2 b=1 Y=a>b X=b==a

Y è pari ad 1 X è pari a 0

Introduzione a Matlab -- 16

Operatori Logici

Operatori Binari: Il formato dell'operazione logica è Risultato=operatore(A,B). Gli operatori sono:

Operatori Monari: Il formato dell'operazione logica è Risultato=operatore (A). Gli operatori sono:

Esempio >> a=1 >> b=0 >> c= a & b

oppure >> c=and(a,b)

c= 0

Esempio >>A=[ 1 2 3 0 ] >>B=any(a) B=1 >>C=all(a) C=0

Introduzione a Matlab -- 17

Principali comandi sulle matrici

Trasposta

>>B=A’ ( oppure >>B=transpose(A) )

Assegna a B(i,j) il valore A(j,i) =AT

Determinante

>> d=det(A)

Assegna alla variabile d il valore del determinante di A, se A è quadrata

Rango

>> r=rank(A)

Assegna alla variabile r il valore del rango di A.

Introduzione a Matlab -- 18

Principali comandi sulle matrici

Inversa

>>I=inv(A)

Assegna a I l’inversa della matrice A (se esiste!)

Traccia

>> t=trace(A)

Assegna alla variabile t il valore della traccia di A

Autovalori

>> e=eig(A)

Assegna alla variabile e un vettore contenente gli autovalori di A.

Introduzione a Matlab -- 19

L’help online 1/2

• Digitando Help dal prompt di comando compare la lista completa dei toolbox presenti. Digitando help < nome toolbox> si ha l'elenco completo delle funzioni disponibili per quel toolbox. Digitando help <nome funzione> si accede alla descrizione di quel comando.

• Dal menu Help

Help window: Non è altro che l'help che si può ottenere da linea di comando messo sotto forma di finestra grafica di più agevole consultazione. Analogamente si può eseguire il comando doc <nome comando> per ottenere in forma grafica le funzioni disponibili.

Help Desk: Un help in HTML molto completo e di

facilenavigazione fornito anche di svariati esempi Per avere maggiori informazioni sugli operatori visti finora e su

altri operatori su matrici consultare la sezione dell' help window matlab/matfun

Introduzione a Matlab -- 20

L’help online 2/2

Cliccando con il mouse su fx si apre una nuova tipologia di HELP - Si possono individuare le funzioni di interesse per macrosettore - Si inseriscono le parole chiave della funzione

Introduzione a Matlab -- 21

Costrutti per la programmazione MATLAB

• Utilizzati per una programmazione evoluta • Molto simili ai costrutti del C • Consentono elaborazioni complesse dei dati

Costrutti fondamentali: • IF • FOR • WHILE

Introduzione a Matlab -- 22

IF

• Utilizzato quado l'esecuzione di un certo numero di istruzioni è vincolato dal soddisfacimento di un certa espressione logica.

Sintassi: if (espressione logica) istruzioni; else istruzioni; end

Introduzione a Matlab -- 23

IF: Esempio

if (temperatura > 25) ariafredda = 1; else ariafredda=0; end

Controllo di temperatura di una stanza

Introduzione a Matlab -- 24

FOR

• Utilizzato quando un blocco di istruzioni deve essere ripetuto un ben determinato numero di volte.

Sintassi: for indice=init:step:end istruzioni; end

Step è l’incremento del contatore ad ogni ciclo. E’ opzionale, se omesso vale 1

Introduzione a Matlab -- 25

FOR: Esempio

Si vuole costruire una matrice 3x3

Otteniamo a=[1, 1/2, 1/3; ½, 1/3, ¼; 1/3, ¼, 1/5]

k = 3; for m = 1:k for n = 1:k a(m,n) = 1/(m+n -1); end end

Introduzione a Matlab -- 26

WHILE

• Utilizzato quando un blocco di istruzioni deve essere ripetuto finché una condizione logica risulta vera. Sintassi: while (espressione logica) istruzioni; end

Esempio: Controllo di temperatura di una stanza

while (Temperatura>20) ariafredda=1; end

Introduzione a Matlab -- 27

BREAK

• Utilizzato quando si deve interrompere un ciclo (for o while) prima del previsto.

Esempio

Per maggiori informazioni consultare l'help a matlab/lang

… % inizializzazione di y(i) svolta in precedenza for i=1:1000 a(i)=y(i) if (a(i) > 1000) break; end end

Introduzione a Matlab -- 28

Script di Matlab: sequenza di comandi

• Una sequenza di comandi diretti può costituire un programma.

• Si digitano le istruzioni non nella finestra dei comandi ma

bensì attivando un apposito programma per editare i testi, l’editor.

Un file «Untitled.m» vuoto si apre cliccando sul rettangolino bianco in alto a sinistra. Il file si può successivamente salvare con nome.

Per inserire i commenti nel programma basta farli precedere dal simbolo %

Introduzione a Matlab -- 29

M-files

Matlab dispone di un editor a cui si accede mediante il comando edit. I file prodotti con questo editor vengono salvati con l’estensione .m e sono eseguibili da MATLAB.

Possiamo costruire dei file, con estensione .m, che contengono una serie di comandi e costrutti Matlab. Chiamando il file dal prompt dei comandi eseguiamo tutti i comandi in esso contenuti. Assicurarsi che la directory nella quale è stato salvato sia inclusa nel Path di Matlab (elenco di cartelle dove Matlab va a cercare i nomi dei files che si digitano). File – Set Path Un m-file è come uno script (batch). E’ solo un modo di raggruppare i comandi. Le modifiche sulle variabili non sono locali ma si riflettono direttamente sul workspace

Esempio: Costruire un M-file per la risoluzione di un sistema lineare

Introduzione a Matlab -- 30

Esempio: Risoluzione di un sistema lineare

Si risolva il seguente sistema

Abbiamo un sistema del tipo Ax=b.

Passi per la risoluzione:

1. Costruire A e b

2. Verificare se A è invertibile

3. Trovare la soluzione: x = inv(A)*b

Introduzione a Matlab -- 31

M-files

% % Risolvere un sistema di equazioni lineari % clear close all % A = [1,1,1,-1; 1,1,-1,0; 1,-1,1,0; 1,2,-3,0]; B = [1;2;0;2]; % % Ax = B % % x = inv(A)*B % x = inv(A)*B

% identifica una riga di commento

Introduzione a Matlab -- 32

M-function

Possiamo aggiungere alla funzioni preesistenti, funzione costruite da noi per risolvere problemi specifici.

Le variabili definite all'interno di una function sono LOCALI

Sintassi: function [output]=nomefunction(input) istruzioni; end; %(optional)

All'interno del blocco di istruzioni le variabili output vengono definite e il loro valore viene fornito al termine della funzione stessa.

Non occorre usare return come in C. Anche le function vengono salvate con estensione .m

Introduzione a Matlab -- 33

Function

function [mean,stdev] = stat(x) n = length(x); mean = sum(x)/n; stdev = sqrt(sum((x-mean).^2/n));

Esempio. Calcolo di alcune funzione statistiche di un vettore

Il blocco va salvato in un file .m di nome stat.m, e si può utilizzare come di seguito, purché il file stat.m sia nella stessa directory o in una directory inserita nel path (File->Set Path...)

dati = rand (10,1); % crea un vettore di numeri casuali [m,var] = stat(dati);

Introduzione a Matlab -- 34

Grafici in Matlab

Per visualizzare graficamente l'andamento di una variabile si utilizza il comando plot.

plot(x,y)

Crea un grafico nella cui ordinata sono presenti i valori del vettore y e nella cui ascissa i valori del vettore x.

ATTENZIONE!!!!! I vettori x e y devono avere le stesse dimensioni!

Esempi: visualizzare graficamente semplici funzioni come sin(t), cos(t)

Introduzione a Matlab -- 35

Grafici in Matlab

Il comando plot traccia un grafico sull'ultima figura aperta, cancellando il grafico precedente.

Per creare una nuova figura si usa il comando figure

Il comando hold consente di “bloccare” l'immagine sul grafico. Il prossimo comando plot disegnerà sulla stessa finestra ma non

cancellerà il grafico precedente.

È possibile tracciare grafici di diversi colori e con diverse tipologie di linea.

Per ulteriori dettagli: help plot

Introduzione a Matlab -- 36

plot

clear close all x = 0:0.1:4*pi; y = sin(x); plot(x,y) figure stem(x,y) axis([0,2*pi, -1,1]) title('Funzione sin(x)') pause grid on

Introduzione a Matlab -- 37

Plot 3D

clear close all [x, y] = meshgrid(-1:.25:1); z = sin(x.^2 + y.^2); surf(x, y, z) figure [X,Y] = meshgrid(-2:.2:2, -4:.4:4); Z = X .* exp(-X.^2 - Y.^2); surf(X,Y,Z)