INTRODUZIONE A MATLAB - Intranet...

44
CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso di FONDAMENTI DI AUTOMATICA Silvia Strada INTRODUZIONE A MATLAB

Transcript of INTRODUZIONE A MATLAB - Intranet...

Page 1: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

CORSO DI LAUREA IN INGEGNERIA GESTIONALE

Politecnico di Milano

Per il corso di

FONDAMENTI DI AUTOMATICA

Silvia Strada

INTRODUZIONE A MATLAB

Page 2: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Indice

2

★ Matlab

★ L’Ambiente Matlab★ Variabili e Costanti★ Matrici e Vettori★ Grafici★ Script e Funzioni★ Algebra Lineare★ Polinomi

★ Simulink

★ L’Ambiente Simulink★ Librerie★ Sottosistemi★ Simulazione★ Analisi dell’Uscita

Page 3: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Matlab

3

1 Introduction

1-2

What Is MATLAB? MATLAB® is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation. Typical uses include:

• Math and computation

• Algorithm development

• Modeling, simulation, and prototyping

• Data analysis, exploration, and visualization

• Scientific and engineering graphics

• Application development, including graphical user interface building

MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar noninteractive language such as C or Fortran.

The name MATLAB stands for matrix laboratory. MATLAB was originallywritten to provide easy access to matrix software developed by the LINPACKand EISPACK projects. Today, MATLAB uses software developed by theLAPACK and ARPACK projects, which together represent the state-of-the-artin software for matrix computation.

MATLAB has evolved over a period of years with input from many users. Inuniversity environments, it is the standard instructional tool for introductoryand advanced courses in mathematics, engineering, and science. In industry,MATLAB is the tool of choice for high-productivity research, development, andanalysis.

MATLAB features a family of application-specific solutions called toolboxes.Very important to most users of MATLAB, toolboxes allow you to learn andapply specialized technology. Toolboxes are comprehensive collections ofMATLAB functions (M-files) that extend the MATLAB environment to solveparticular classes of problems. Areas in which toolboxes are available includesignal processing, control systems, neural networks, fuzzy logic, wavelets,simulation, and many others.

Page 4: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Matlab

4

1 Introduction

1-2

What Is MATLAB?MATLAB® is a high-performance language for technical computing. Itintegrates computation, visualization, and programming in an easy-to-useenvironment where problems and solutions are expressed in familiarmathematical notation. Typical uses include:

• Math and computation

• Algorithm development

• Modeling, simulation, and prototyping

• Data analysis, exploration, and visualization

• Scientific and engineering graphics

• Application development, including graphical user interface building

MATLAB is an interactive system whose basic data element is an array thatdoes not require dimensioning. This allows you to solve many technicalcomputing problems, especially those with matrix and vector formulations, ina fraction of the time it would take to write a program in a scalar noninteractivelanguage such as C or Fortran.

The name MATLAB stands for matrix laboratory. MATLAB was originally written to provide easy access to matrix software developed by the LINPACK and EISPACK projects. Today, MATLAB uses software developed by the LAPACK and ARPACK projects, which together represent the state-of-the-art in software for matrix computation.

MATLAB has evolved over a period of years with input from many users. In university environments, it is the standard instructional tool for introductory and advanced courses in mathematics, engineering, and science. In industry, MATLAB is the tool of choice for high-productivity research, development, and analysis.

MATLAB features a family of application-specific solutions called toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn and apply specialized technology. Toolboxes are comprehensive collections of MATLAB functions (M-files) that extend the MATLAB environment to solve particular classes of problems. Areas in which toolboxes are available include signal processing, control systems, neural networks, fuzzy logic, wavelets, simulation, and many others.

Page 5: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Ambiente Matlab

5

Page 6: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Ambiente Matlab

6

Launch Pad

La Launch Pad consente l’apertura degli help, dei demo e contiene un link diretto ai siti web dei produttori

Attraverso la Launch Pad può essere aperto Simulink

La finestra Workspace contiene l’elenco di tutte le variabili in uso.

Per ciascuna variabile vengono specificate la dimensione (in termini matriciali e in byte) e il tipo di dato.

Workspace

Page 7: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Ambiente Matlab

7

Command HistoryLa Command History contiene tutti i

comandi che sono stati utilizzati nella Command Window fino al

momento attuale.

E’ così possibile richiamare direttamente i comandi tramite la Command History senza doverli

riscrivere nella Command Window

La finestra Current Directory specifica la cartella di lavoro: nella

finestra sono presenti tutti i file contenuti nella cartella di lavoro

(file “matlab” e file “non matlab”).

I file “matlab” presenti nella Current Directory possono essere richiamati

direttamente attraverso la Command Window

Current Directory

Page 8: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Ambiente Matlab

8

Command Window

La Command Window è la finestra principale dell’ambiente Matlab

Attraverso la Command Window è possibile definire le variabili da utilizzare, eseguire operazioni,

creare grafici, eseguire programmi, richiamare toolbox, etc.

Page 9: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Ambiente Matlab

9

Help

Page 10: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

La Command Window

10

E’ il mezzo principaleper “comunicare” con Matlab

Il modo più semplice per utilizzarela Command Window è

scrivere direttamente i comandialla destra del prompt “>>”

Matlab è case-sensitive, “A” e “a” sono due variabili differenti

Page 11: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

La Command Window

11

E’ possibile “spezzare” lunghe righe di comando

E’ possibile inserire più comandi sulla stessa riga

Page 12: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

La Command Window

12

E’ possibile, utilizzando la tastiera,richiamare e modificare i comandi precedentemente inseriti

Seleziona finoalla fine della linea

↖⇧

ESC

CANC

FINE⇧

FINE

↖ Muove il cursoreall’inizio della linea

Muove il cursorealla fine della linea

Ripristina (pulisce)la linea

Cancella il carattereche segue il cursore

Cancella il carattereche precede il cursore

Seleziona finoall’inizio della linea

CTRL →

Richiama la lineaprecedente

Richiama la lineasuccessiva

Muove il cursoreun carattere indietro

Muove il cursoreun carattere avanti

Muove il cursore avantidi una parola

Muove il cursore indietrodi una parola

CTRL ←

Page 13: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

La Command Window

13

Formato dei numeri

A =!

43

1.2345 · 10!6 !3"

>> x = [4/3 1.2345e-6 -3]

>> format rational

>> format short

>> format long

>> format short e

>> format long e

>> format short g

>> format long g

>> format hex

>> format bank

>> format +

x = 1.333333333333333e+000 1.234500000000000e-006 -3.000000000000000e+000

x = 1.3333 0.0000 -3.0000

x = 1.33333333333333 0.00000123450000 -3.00000000000000

x = 1.3333e+000 1.2345e-006 -3.0000e+000

x = 1.3333 1.2345e-006 -3

x = 1.33333333333333 1.2345e-006 -3

x = 3ff5555555555555 3eb4b6231abfd271 c008000000000000

x = 1.33 0.00 -3.00

x = ++-

x = 4/3 1/810045 -3

Page 14: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

La Command Window

14

Preferences della Command Window

Page 15: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Variabili, Costanti, Matrici e Vettori

15

>> C = [1 0 0]

C =

1 0 0

Vettore Riga(matrice 1×3)

C =!

1 0 0"

>> B = [ 0; 1; 0 ]

B =

0 1 0B =

!

"010

#

$

Vettore Colonna(matrice 3×1)

>> k = 3

k =

3

k = 3Costante >> A = [ 0 1 1; -1 -2 0; 0 0 -1 ]

A =

0 1 1 -1 -2 0 0 0 -1

Matrice 3×3

A =

!

"0 1 1

!1 !2 00 0 !1

#

$

Page 16: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Operazioni e Funzioni

16

>> A*B

ans =

1 -2 0

ProdottoMatriciale

(righe per colonne)

>> 10*A

ans =

0 10 10 -10 -20 0 0 0 -10

ProdottoScalare per Matrice

>> (k+2)*A(2,1)

ans =

-5

Operazioni con unElemento diuna Matrice

>> abs(h)

ans =

2.2361

Modulodi un Numero Complesso

>> sqrt(k)+h

ans =

2.7321 + 2.0000i

OperazioniSpecifiche

>> h = 1 + 2i

h =

1.0000 + 2.0000i

NumeriComplessi

>> (k-5)^2

ans =

4

OperazioniElementari

Page 17: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Operazioni e Funzioni

17

>> H = [1 1 2; 3 1 2; 3 3 0]

H =

1 1 2 3 1 2 3 3 0

A =

!

"0 1 1

!1 !2 00 0 !1

#

$ H =

!

"1 1 23 1 23 3 0

#

$

>> A.*H

ans =

0 1 2 -3 -2 0 0 0 0

ProdottoElemento per

Elemento>> A-H

ans =

-1 0 -1 -4 -3 -2 -3 -3 -1

Sottrazionetra Matrici

>> A*H

ans =

6 4 2 -7 -3 -6 -3 -3 0

ProdottoMatriciale

(righe per colonne)

Page 18: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Operazioni e Funzioni

18

>> Pcol1 = B

Pcol1 =

0 1 0

>> Pcol2 = A*B

Pcol2 =

1 -2 0

>> Pcol3 = (A^2)*B

Pcol3 =

-2 3 0

>> P = [ Pcol1 Pcol2 Pcol3]

P =

0 1 -2 1 -2 3 0 0 0

Creazione di Matricida Vettori

Page 19: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Operazioni e Funzioni

19

>> tA = A'

tA =

0 -1 0 1 -2 0 1 0 -1

Calcolo dellaMatrice Trasposta

di una Matrice

>> det(A)

ans =

-1

Calcolo delDeterminantedi una Matrice

>> poly(A)

ans =

1 3 3 1

Calcolo deiCoefficienti del

Polinomio Caratteristicodi una Matrice >> inv(A)

ans =

-2 -1 -2 1 0 1 0 0 -1

Calcolo dellaMatrice Inversa

di una Matrice

Page 20: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Operatore ‘:’

20

a : b

Definisce il vettore riga!a a + 1 a + 2 . . . a + k ! 1 a + k

"

! b " akdove è il più grande intero

>> 0:10

ans =

0 1 2 3 4 5 6 7 8 9 10

>> 2.3:6.7

ans =

2.3000 3.3000 4.3000 5.3000 6.3000

Page 21: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Operatore ‘:’

21

>> t = 0:2.5:11

t =

0 2.5000 5.0000 7.5000 10.0000

!a a + p a + 2p . . . a + (k ! 1)p a + kp

"Definisce il vettore riga

!b " a

pkdove è il più grande intero

>> 0:0.1:1

ans =

Columns 1 through 7

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000

Columns 8 through 11

0.7000 0.8000 0.9000 1.0000

a : p : b

Page 22: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Operatore ‘:’

22

Si può utilizzare l’operatore ‘:’ per lavorarecon sottomatrici e sottovettori

>> A2 = [-2 1; 0 1]

A2 =

-2 1 0 1

>> A2*A??? Error using ==> *Inner matrix dimensions must agree.

>> A2*A(1:2,1:2)

ans =

-1 -4 -1 -2

>> B2 = B(2:3,1)

B2 =

1 0

B(2 : 3, 1)

B =

!

"010

#

$

A(1 : 2, 1 : 2)

A =

!

"0 1 1

!1 !2 00 0 !1

#

$

Page 23: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

L’Operatore ‘:’

23

L’operatore ‘:’ consente inoltre di creare utili tabelle

>> s = (0:0.1:1);>> [s;exp(s)]

ans =

Columns 1 through 7

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 1.0000 1.1052 1.2214 1.3499 1.4918 1.6487 1.8221

Columns 8 through 11

0.7000 0.8000 0.9000 1.0000 2.0138 2.2255 2.4596 2.7183

>> n=(0:10)'

n =

0 1 2 3 4 5 6 7 8 9 10

>> pows = [n n.^2 2.^n]

pows =

0 0 11 1 22 4 43 9 84 16 165 25 326 36 647 49 1288 64 2569 81 512

10 100 1024

Page 24: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

y = sin x

Grafici

24

>> x = 0:pi/100:2*pi

x =

Columns 1 through 7

0 0.0314 0.0628 0.0942 0.1257 0.1571 0.1885

Columns 8 through 14

0.2199 0.2513 0.2827 0.3142 0.3456 0.3770 0.4084

⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮

Columns 190 through 196

5.9376 5.9690 6.0004 6.0319 6.0633 6.0947 6.1261

Columns 197 through 201

6.1575 6.1889 6.2204 6.2518 6.2832

>> y = sin(x)

y =

Columns 1 through 7

0 0.0314 0.0628 0.0941 0.1253 0.1564 0.1874

Columns 8 through 14

0.2181 0.2487 0.2790 0.3090 0.3387 0.3681 0.3971

⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮

Columns 190 through 196

-0.3387 -0.3090 -0.2790 -0.2487 -0.2181 -0.1874 -0.1564

Columns 197 through 201

-0.1253 -0.0941 -0.0628 -0.0314 -0.0000

>> plot(x,y)

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 25: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Grafici

25

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x = [0,2!]

sin

(x)

Grafico della funzione sin(x)

E’ possibile aggiungere etichette agli assi e un titolo al grafico

>> xlabel('x = [0,2\pi]')>> ylabel('sin(x)')>> title('Grafico della funzione sin(x)','FontSize',12)

Page 26: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Grafici

26

E’ possibile disegnare più funzioni nello stesso grafico...

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

>> x = -10:0.01:10;>> y1 = x;>> y2 = x.^2;>> y3 = x.^3;>> plot(x,y1,x,y2,x,y3)

Page 27: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Grafici

27

-4 -3 -2 -1 0 1 2 3 4-4

-3

-2

-1

0

1

2

3

4x

x2

x3

...e modificare l’aspetto del grafico a proprio piacimento

>> legend('x','x^2','x^3')>> axis([-4 4 -4 4])>> grid on

Page 28: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Property Editor

28

Page 29: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Property Editor

29

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Grafico di Prova

Page 30: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Grafici

30

0 1 2 3 4 5 6-2

-1

0

1

2

0 1 2 3 4 5 6-2

-1

0

1

2

0 1 2 3 4 5 6-2

-1

0

1

2

>> x = 0:pi/100:2*pi;>> y1 = sin(x);>> y2 = cos(x);>> y3 = tan(x);

>> subplot(3,1,1); plot(x,y1)>> axis([0 2*pi -2 2])

>> subplot(3,1,2); plot(x,y2)>> axis([0 2*pi -2 2])

>> subplot(3,1,3); plot(x,y3)>> axis([0 2*pi -2 2])

E’ possibile disegnare più grafici contemporaneamente

Page 31: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

M-files

31

Gli M-files sono programmi all’interno dell’ambiente Matlab

Gli M-files possono essere:

★ Scripts che semplicemente eseguono una serie di istruzioni Matlab

★ Funzioni che accettano valori in ingresso e producono valori in uscita

Scripts Funzioni

Non accettano valori in ingresso e non forniscono valori in uscita

Possono accettare valori in ingresso e restituiscono valori in uscita

Operano esclusivamente su dati del workspace Matlab

Possono utilizzare variabili locali interne al programma

Servono per automatizzare azioni da ripetere spesso

Servono per introdurre nuove funzionalità all’ambiente Matlab

Page 32: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Scripts

32

>> matriceP

P =

0 1 -2 1 -2 3 0 0 0

% Determinazione della matrice di% controllabilita’ P% A = [ 0 1 1; -1 -2 0; 0 0 -1 ];B = [ 0; 1; 0 ];Pcol1 = B;Pcol2 = A*B;Pcol3 = (A^2)*B;P = [ Pcol1 Pcol2 Pcol3]

matriceP.m

Page 33: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Scripts

33

% Creazione di grafici sinusoidali%x1 = 0:pi/100:2*pi;y11=sin(x1);y12=cos(x1);subplot(2,2,1); plot(x1,y11,'r')axis([0 2*pi -1.2 1.2])subplot(2,2,2); plot(x1,y12,'b')axis([0 2*pi -1.2 1.2])x2 = 0:pi/4:2*pi;y21=sin(x2);y22=cos(x2);subplot(2,2,3); plot(x2,y21,'r:d')axis([0 2*pi -1.2 1.2])subplot(2,2,4); plot(x2,y22,'b:s')axis([0 2*pi -1.2 1.2])

sinusoidi.m

0 2 4 6

-1

-0.5

0

0.5

1

0 2 4 6

-1

-0.5

0

0.5

1

0 2 4 6

-1

-0.5

0

0.5

1

0 2 4 6

-1

-0.5

0

0.5

1

>> sinusoidi

Page 34: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Funzioni

34

function r = f_matriceP(A,B)% F_MATRICEP Matrice P.% Determinazione della matrice di% controllabilita’ P% Pcol1 = B;Pcol2 = A*B;Pcol3 = (A^2)*B;% Matrice di controllabilita’:P = [ Pcol1 Pcol2 Pcol3];r = P;

f_matriceP.m

>> f_matriceP([ 0 1 1; -1 -2 0; 0 0 -1 ], ...[ 0; 1; 0 ])

ans =

0 1 -2 1 -2 3 0 0 0

>> A = [ 1 1 -1; 0 -2 0; 0 0 1 ];>> B = [ 0; 1; 1 ];>> f_matriceP(A,B)

ans =

0 0 -3 1 -2 4 1 1 1

>> vectorP = f_matriceP(A,B)

vectorP =

0 0 -3 1 -2 4 1 1 1

Page 35: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Funzioni

35

function r = f_matriceP(A,B)

% F_MATRICEP Matrice P.

% Determinazione della matrice di% controllabilita’ P%

Pcol1 = B;Pcol2 = A*B;Pcol3 = (A^2)*B;

% Matrice di controllabilita’:

P = [ Pcol1 Pcol2 Pcol3];r = P;

function r = f_matriceP(A,B)

variabili di ingressonome della funzionevariabile di uscitaparola chiave

The “Function Definition Line”

The “H1 Line”Contiene la prima riga dell’help

Testo dell’HelpDescrizione completa delle funzionalità

The “Function Body”Contiene il codice vero e proprio

CommentiGenerici commenti dentro il codice

Page 36: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Funzioni

36

>> calc_contr(A,B)

P =

0 0 -3 1 -2 4 1 1 1

ans =

Il sistema è completamente controllabile

>> calc_contr([ 1 0; 1 2 ], [ 0; 1 ])

P =

0 0 1 2

ans =

Il sistema non è completamente controllabile

function r = calc_contr(A,B)% CALC_CONTR Calcolo Controllabilita’% Calcolo della controllabilita’% attraverso la il calcolo% della matrice P%dimA = size(A);dimB = size(B);if (dimA(1,1) == dimA(1,2)) & (dimA(1,2) == dimB(1,1)) P = B; for n = 1:(dimA(1,1)-1)

new_col = (A^n)*B;P = [P new_col];

end P if det(P) ~= 0

r = ‘Il sistema è completamente controllabile’; else

r = ‘Il sistema non è completamente controllabile’; endelse r = ‘Dimensioni delle matricinon valide’end

calc_contr.m

Page 37: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Funzioni

37

Controllo del Flusso

if logical_expressionstatements

elseif logical_expressionstatements

elsestatements

end

switch expressioncase value1

statementscase value2

statements...otherwise

statementsend

while expressionstatements

end

for index = start:increment:endstatements

end

try,statements,...,statements,

catch,statements,...,statements,

end

Subfunctions

E’ possibile definire, all’interno di una funzione, una o più sottofunzioni

Ciascuna sottofunzione dovrebbe essere finalizzataad una particolare attività da svolgere all’interno della funzione

L’uso delle sottofunzioni rende più semplice e chiaro il codice del M-file

Page 38: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Algebra Lineare

38

Attraverso Matlab è possibile risolvere in maniera semplicesistemi di equazioni lineari

!"

#

x1 = !2x2 = 7x3 = !12

>> X = A\B

X =

-2.0000 7.0000 -12.0000

!"

#

3x1 + x2 = 1x1 + 2x2 + x3 = 02x2 + x3 = 2

>> A = [ 3 1 0; 1 2 1; 0 2 1 ]

A =

3 1 0 1 2 1 0 2 1

>> B = [ 1; 0; 2 ]

B =

1 0 2

Page 39: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Algebra Lineare

39

E’ possibile risolvere anche sistemi il cui numero delle incognite (n)è diverso dal numero delle equazioni (m).

★ Se m < n il sistema è sottodeterminato e avrà infinite soluzioni; in questo caso Matlab fornisce una soluzione “base” con almeno m valori non nulli

★ Se m > n il sistema è sovradeterminato e può non avere soluzioni; in ogni caso Matlab fornisce la soluzione “ai minimi quadrati”

!"

#

x1 + x2 = 12x1 + 3x2 = 0x1 + 2x2 = 2

>> A = [ 1 1; 2 3; 1 2 ]

A =

1 1 2 3 1 2

>> B = [ 1; 0; 2 ]

B =

1 0 2

>> X = A\B

X =

-1.0000 1.0000

x1 + x2 = 2

>> X = A\B

X =

2 0

>> A = [ 1 1 ]

A =

1 1

>> B = 2

B =

2

Page 40: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Polinomi

40

Matlab rappresenta un polinomio attraverso un vettore rigai cui valori corrispondono ai coefficienti del polinomio

ordinati secondo le potenze decrescenti

Matlab fornisce alcune funzioniper eseguire operazioni standard sui polimoni

conv Moltiplicazione tra polinomi (convoluzione)

deconv Divisione tra polinomi (deconvoluzione)

roots Fornisce le radici di un polinomio (soluzioni)

poly Fornisce il polinomio che presenta determinate radici (soluzioni)

polyval Verifica di un polinomio

polyder Derivazione di un polinomio

residue Espansione in fratti semplici (calcolo dei residui)

p(x) = x3 ! 2x ! 4>> p = [ 1 0 -2 -4 ]

P =

1 0 -2 -4

Page 41: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Polinomi

41

La funzione poly invece restituisce un vettore riga che comprendei coefficienti del polinomio che ha le radici passate come argomento

Come già visto in precedenza, la funzione poly serve ancheper calcolare il polinomio caratteristico di una matrice

La funzione roots fornisce le radici di un

polinomio e le memorizza in un vettore colonna

>> roots(p)

ans =

2.0000 -1.0000 + 1.0000i -1.0000 - 1.0000i

>> r = [2; -1+1i; -1-1i]

r =

2.0000 -1.0000 + 1.0000i -1.0000 - 1.0000i

>> poly(r)

ans =

1 0 -2 -4

Page 42: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Polinomi

42

La funzione polyder calcola la derivata di un polinomio

La funzione polyval determina il valore di un polinomio in corrispondenza di uno specifico valore della variabile

La funzione polyval è in grado di determinare il valore di un polinomioanche in senso matriciale

p!(x) = 3x2 ! 2>> polyder(p)

ans =

3 0 -2

p(3) = 33 ! 2 · 3 ! 4 = 17>> polyval(p,3)

ans =

17

Page 43: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Polinomi

43

La funzione residue determina l’espansione in fratti semplicidi una funzione razionale fratta che non presenta radici coincidenti

b(x)a(x)

=r1

x ! p1+

r2

x ! p2+ . . . +

rn

x ! pn+ kx

residue, nella sua versione base, fornisce un vettore colonna di residui

f(x) =!4x + 8

x2 + 6x + 8

>> b = [-4 8];>> a = [1 6 8];>> residue(b,a)

ans =

-12 8

Page 44: INTRODUZIONE A MATLAB - Intranet DEIBhome.deib.polimi.it/strada/.../fda_ges_milano_files/...Matlab.pdf · CORSO DI LAUREA IN INGEGNERIA GESTIONALE Politecnico di Milano Per il corso

Polinomi

44

La funzione residue può essere utilizzata al contrario (passandocome argomenti r, p e z) per ottenere la funzione razionale fratta

>> [r,p,k] = residue(b,a)

r =

-12 8

p =

-4 -2

k =

[]

residue può anche fornire:

★ un vettore colonna di residui (r)

★ un vettore colonna di poli (p)

★ un vettore riga di termini non frazionari (k)

!4x + 8x2 + 6x + 8

= !12

x + 4+

8x + 2