Sei sulla pagina 1di 20

Introduzione a MATLAB Introduzione a MATLAB

MATLAB possiede diverse librerie di funzioni toolboxes- che consentono di affrontare con
MATLAB (MATrix LABoratory) creato originariamente come uno strumento per manipolare le
semplicit diverse tipologie di problemi di ingegneria, di matematica:
matrici diventato lambiente di calcolo scientifico pi utilizzato nellingegneria e nella ricerca
Calcolo di integrali e derivate
scientifica universitaria ed industriale.
Esso ha elevate potenzialit di: Risoluzioni di equazioni differenziali complesse

Calcolo: ogni oggetto in MATLAB una matrice, ad esempio Modellazione, simulazione di sistemi reali complessi multivariabili

una matrice un oggetto con 2 indici Problemi di ottimizzazione


un vettore un oggetto con 1 indice cio una matrice 1n Problemi di controllo
uno scalare una matrice 11
Simulazione di circuiti elettronici
Visualizzazione: ha capacit di visualizzazione grafica 2D e 3D molto potenti
Analisi di dati

Programmazione: un programma interattivo dotato di un interprete di comandi; i comandi Grafici a 2D e 3D


possono anche essere contenuti in un file testo (m-file)
Sviluppo di algoritmi

PAGINA 2

Introduzione a MATLAB Introduzione a MATLAB

Ambiti tipici di utilizzo di MATLAB sono: In realt ogni variabile per MATLAB una struttura di tipo vettoriale o array.
Un array un insieme di valori ordinati, secondo uno o pi indici, cui ci si riferisce con un singolo nome di
Calcolo/matematica
variabile.

Analisi di dati Dalla versione 5 di MATLAB, e successive, possibile utilizzare array con pi di due indici.

Tipicamente un array ad un indice detto vettore, ed un array a due indici chiamato matrice.
Simulazione dinamica

Sviluppo di algoritmi

Visualizzazione/Grafica

PAGINA 3 PAGINA 4

Introduzione a MATLAB Introduzione a MATLAB


Esempio (array a uno e due indici) La stessa sequenza di numeri pu anche essere memorizzata come array a due indici A nelle forme:

La sequenza di numeri interi {2,3, 7, 2, 11,8} pu essere rappresentata in forma di array ad un solo indice
x nelle forme:

La matrice di sinistra detta di tipo 23, dove 2 indica il numero di righe e 3 il numero di colonne.
Conseguentemente quella di destra detta di tipo 3 2. Il numero di righe per il numero di colonne fornisce
il numero di elementi della matrice, ossia 6.
In questo caso avremo due indici, il primo riferito alle righe dellarray, il secondo riferito alle colonne.
Larray di sinistra detto vettore riga, quello di destra vettore colonna.
Entrambi iniziano da uno, la numerazione del primo indice va dallalto al basso (righe) e quella del secondo
Entrambi hanno lunghezza 6. Tramite luso degli indici, la cui numerazione va da 1 a 6, da sinistra a destra
da sinistra a destra (colonne). Per la matrice di sinistra A(1, 2) corrisponde a 3 ed A(2, 2) a 11, mentre per
nei vettori riga e dallalto verso il basso nei vettori colonna, possiamo accedere ad un dato valore allinterno
quella di destra A(2, 1) corrisponde a 3 e A(2, 2) a 11.
dellarray.
Ad esempio a x(2) corrisponder il valore 3, cos come a x(5) il valore 11.
PAGINA 5 PAGINA 6
Introduzione a MATLAB Introduzione a MATLAB
In particolare si noti che il vettore x del precedente esempio nella forma riga o colonna rispettivamente una Se invece considerassimo
>> x=[2; -3; 7; 2; 11; -8]
matrice di tipo 16 o 61. Questo esattamente il modo in cui MATLAB definisce i vettori. Non solo, per
x=
MATLAB anche le quantit scalari sono semplici matrici di tipo 1 1. 2
-3
Per memorizzare il precedente vettore x nella forma riga in MATLAB possiamo utilizzare la seguente
7
espressione 2
11
-8
>> x=[2 -3 7 2 11 -8] si otterrebbe un vettore colonna.
x=
Le componenti in questo caso sono delimitate da un punto e virgola.
2 -3 7 2 11 -8
Per visualizzare il valore di una componente del vettore basta scrivere
>> x(2)
Le parentesi quadre delimitano gli elementi del vettore, mentre gli spazi le singole componenti del vettore ans =
-3
riga.

PAGINA 7 PAGINA 8

Introduzione a MATLAB Introduzione a MATLAB


Se cambiamo il valore di una componente del vettore, dobbiamo ricordarci di usare il punto e virgola Matlab consente di lavorare con le matrici in modo semplice e veloce
altrimenti MATLAB visualizzer lintero vettore.
>> x(2)=-7
x=
2
A = [a1,1 ..;..;.. am,n] Questo il modo in cui definita la matrice A in matlab, ovvero
-7 solitamente in lettera maiuscola il nome della matrice, e fra parentesi
7 quadre gli elementi ai,j. Le componenti di una riga vanno scritte tutte di
2 seguito, lasciando uno spazio fra un valore e laltro; per scrivere una
11 nuova riga o si va a capo, oppure si mette ;.
-8
Per passare da vettori riga a vettori colonna si utilizza il simbolo di apostrofo, operazione che dal punto di Esempio :
vista dellalgebra lineare corrisponde alla trasposizione. A = [1 5 3 ; -6 4 8 ] oppure A = [ 1 5 3
>> x=[2 -3 7 2 11 -8] -6 4 8 ]
x=
2
-3
7 1 5 3
viene scritta cos la matrice A =
2 - 6 4 8
11
-8

PAGINA 9 PAGINA 10

Introduzione a MATLAB Introduzione a MATLAB

B = A Con questo comando si ottiene la matrice trasposta di A, cio B = AT. C=[AB] In questo modo si lavora a blocchi, e cio si costruisce la matrice C
usando le matrici A e B gi disponibili, purch abbiano lo stesso
numero di righe.
Esempio :
Esempio :
1 5 3
A= 2 5 5 - 9 6
A= B=
- 6 4 8 0 4 9 7 3
1 - 6

B = A
B = 5 4
3 8 2 5 5 - 9 6
C=[AB]=
0 4 9 7 3

Se invece [ B A ] , allora viene messa prima la matrice B e poi la


matrice A.

PAGINA 11 PAGINA 12
Introduzione a MATLAB Introduzione a MATLAB

A+B Loperazione di somma pu essere effettuata solamente se le due matrici A-B Loperazione di sottrazione pu essere effettuata solamente se le due
hanno le stesse dimensioni, in quanto la somma eseguita nel seguente matrici hanno le stesse dimensioni, in quanto la differenza eseguita nel
modo: seguente modo:
ci,j = ai,j + bi,j. ci,j = ai,j bi,j.
Esempio:
Esempio: -1 5 4 3 9 - 4
A= B=
-1 5 4 3 9 - 4 0 8 - 3 5 2 - 6
A= B=
0 8 - 3 5 2 - 6

- 4 - 4 8
C = A-B =
2 14 0 - 5 6 3
C = A+B =
5 10 - 9

PAGINA 13 PAGINA 14

Introduzione a MATLAB Introduzione a MATLAB

x*A Con questo comando tutti gli elementi della matrice A vengono A*B Con questo comando viene fatto il prodotto fra le matrici A e B (il normale
moltiplicati per il valore x. prodotto riga-colonna fra matrici).

Esempio: Esempio :

1 2 2 4 0
A= B=
- 23 4 3 2 5 3 8
A= x=3
0 11

12 10 16
C = A*B =
- 69 12 16 18 16
B = x*A =
0 33

Per poter eseguire questo prodotto il numero delle colonne di A deve essere
uguale al numero di righe di B.

PAGINA 15 PAGINA 16

Introduzione a MATLAB Introduzione a MATLAB

inv(A) D la matrice A-1 inversa di A tale che AA-1 = A-1A = I


A./B Questo comando fa la divisione fra gli elementi delle matrici A e B che
Esempio: sono nella stessa posizione. Gli elementi di C risultano essere dati da ci,j =
4 0 7 - 0.0323 - 0.1129 0.2258 ai,j/bi,j.

A = 8 2 6
inv(A) = - 0.3548 0.7581 - 0.5161
9 1 4 0.1613 0.0645 - 0.1290
Esempio :

A/B Con questo comando si fa la divisione a destra fra le matrici A e B; essa 16 - 2 1 8 4 0


viene eseguita nel seguente modo:
A = - 2 24 0 , B = 2 6 4
A/B = A*inv(B) = A/B. 1 0 8 9
0 3
Esempio :
1 2 2 3
A= B= - 0.5000
0 4 1 2 2.0000 inf

C = A./B
C = - 1.0000 4.0000 0
0 1 inf 0 0.3333
C = A/B
C=
- 4 8
PAGINA 17 PAGINA 18
Introduzione a MATLAB Introduzione a MATLAB

A(m,n) Questo comando serve a far vedere qual lelemento della matrice A che abs(A) Questo comando d una matrice i cui elementi ai,j sono i moduli degli
c nel posto am,n. elementi ai,j della matrice A di partenza.

Esempio : Esempio :
5 1 12 56

3 0 11 5 - 9 4 - 2 9 4 2
A=
A(3,4) = 23 con A= si ha abs(A) =
9 2 8 23 1 0 - 3 1 0 3

17 6 7 85

max(A) Utilizzando questo comando si ottiene un vettore i cui elementi aj sono i


valori massimi delle corrispondenti j-esime colonne della matrice A.

Esempio :
8 5 - 6

con A = - 2 0 - 4 si ha: max(A) = (8 6 0)
1 6 0

PAGINA 19 PAGINA 20

Introduzione a MATLAB Introduzione a MATLAB

Alcune delle variabili predefinite in MATLAB sono riportate in Tabella. Le principali operazioni possibili sono indicate in Tabella, vedremo in seguito il significato delle operazioni
precedute da un punto, o puntuali.
Nonostante sia ammesso assegnare valori diversi a queste variabili, in generale buona regola evitare di
farlo, fatta eccezione per le variabili i e j spesso usate come indici interi.

PAGINA 21 PAGINA 22

Introduzione a MATLAB Introduzione a MATLAB


Un altro comando di particolare utilit il comando lookfor che consente di identificare le funzioni relative
Alcune delle principali funzioni elementari ad un particolare argomento.
Essenzialmente il comando identifica tutte le funzioni allinterno della cui descrizione compare largomento
predefinite in MATLAB sono riportate nella
passato al comando lookfor.
Tabella, per una lista pi ampia si provi il
Ad esempio
comando help elfun.
>> lookfor logarithm

LOGSPACE Logarithmically spaced vector.


LOG Natural logarithm.
LOG10 Common (base 10) logarithm.
LOG2 Base 2 logarithm and dissect floating point number.
BETALN Logarithm of beta function.
GAMMALN Logarithm of gamma function.
LOGM Matrix logarithm.

restituisce una lista di funzioni (in maiuscolo) con una breve descrizione delle stesse.

PAGINA 23 PAGINA 24
Introduzione a MATLAB Introduzione a MATLAB
La notazione due punti Per costruire vettori colonna baster racchiudere lespressione tra parentesi tonde ed utilizzare loperatore
Per la costruzione di vettori e matrici MATLAB ha diverse funzioni predefinite. apostrofo
Un operatore di fondamentale importanza per costruire vettori equispaziati e per operare con indici la >> x=(2:5)
notazione due punti. La sintassi di base delloperatore
x=
Vettore=Inizio:Passo:Fine 2
3
dove Vettore `e un vettore riga, Inizio e Fine indicando il valore iniziale e finale del vettore e Passo un 4
parametro opzionale che indica lincremento relativo o la spaziatura tra gli elementi (se omesso Passo=1). 5
Si considerino i seguenti esempi Se il valore iniziale maggiore di quello finale ed il passo `e positivo viene creato un vettore nullo

>> x=1:10
>> x=10:1
x=
1 2 3 4 5 6 7 8 9 10 x=
[]
>> x=10:-1:1
x= lo stesso risultato si ha chiaramente anche se il valore iniziale minore di quello finale e lincremento
10 9 8 7 6 5 4 3 2 1 negativo. Il vettore nullo ha lunghezza zero, dimensione 0 0 ed `e denotato da due parentesi quadre senza
nulla allinterno.

PAGINA 25 PAGINA 26

Introduzione a MATLAB Introduzione a MATLAB


La notazione due punti, funziona anche con valori non interi, ad esempio Ad esempio

>> x=0:0.1:0.5 >> a = 0; b=1; n=5;


>> x = linspace(a,b,n)
x=
x=
0 0.1000 0.2000 0.3000 0.4000 0.5000 0 0.2500 0.5000 0.7500 1.0000

Nel caso in cui il passo non sia intero pu risultare difficile luso delloperatore due punti. Ad esempio se restituisce un vettore riga x di lunghezza n con la propriet`a che lelemento di indice i vale
vogliamo creare un vettore con un numero prefissato di punti equispaziati allinterno di un dato intervallo. In
questo caso preferibile utilizzare il comando linspace la cui sintassi x(i) = a+(i 1) (b a)/(n 1).

In particolare le due istruzioni x=linspace(a,b) ed x=linspace(a,b,100) sono equivalenti.


linspace(Inizio, Fine, Numero di Punti)
Anche in questo caso vettori colonna possono essere costruiti tramite loperatore apostrofo di trasposizione

dove il parametro Numero di Punti opzionale, e se omesso viene preso uguale a 100. >> a = 0; b=1; n=5;
>> x = linspace(a,b,n);
>> x =
0
0.2500
0.5000
0.7500
1.0000
PAGINA 27 PAGINA 28

Introduzione a MATLAB Introduzione a MATLAB


Un uso particolarmente efficace della notazione due punti si ha nella gestione di indici di vettori e matrici. o parti di righe e colonne in matrici e sottomatrici
In particolare tale notazione consente di identificare facilmente un intera riga o colonna di una matrice
>> A = [1 2 3; 4 5 6; 7 8 9];
>> A = [1 2 3; 4 5 6; 7 8 9]; >> A(2,2:3)
>> A(:,1) ans =
56
ans = >> A(1:2,2:3)
1 ans =
4 23
7 56
>> A(2,:)
ans = La notazione due punti pu essere usata anche per assegnare in modo rapido nuovi valori a righe e colonne
456 di matrici
Alternativamente possibile specificare un intervallo di indici ed estrarre cos parti di vettori (o matrici)
>> A = [1 2 3; 4 5 6; 7 8 9];
>> x=0:0.1:0.5; >> A(1,:)=2:2:6
>> x(2:4)
A=
ans = 246
0.1000 0.2000 0.3000 456
789

PAGINA 29 PAGINA 30
Introduzione a MATLAB Introduzione a MATLAB
Una operazione che pu risultare utile quella di cancellare alcuni elementi in un vettore cambiandone allo Ecco alcune funzioni MATLAB che consentono di costruire particolari matrici e vettori. Si consulti lhelp
stesso tempo la dimensione per una descrizione dettagliata.

>> x = 1:10;
>> x(1:3)=[]
x=
4 5 6 7 8 9 10

la stessa tecnica pu essere usata nel caso di matrici per rimuovere intere righe o colonne

>> A = [1 2 3; 4 5 6; 7 8 9];
>> A(:,1)=[]
A=
23
56
89

PAGINA 31 PAGINA 32

Introduzione a MATLAB Introduzione a MATLAB


Esempio (Vettorizzazione di una funzione) MATLAB come linguaggio di programmazione
Consideriamo ora il problema di visualizzare una tabella di valori di una funzione non predefinita in
MATLAB, ad esempio Anche gli algoritmi pi semplici richiedono lesecuzione ripetuta di istruzioni e lesecuzione condizionata di
alcune parti. La costruzione ripetuta di blocchi di codice in MATLAB viene eseguita tramite cicli.
Esistono due diversi modi per realizzare cicli, il ciclo incondizionato for...end ed il ciclo condizionato
while...end.
sullintervallo [0, ]. Tale funzione `e una particolare approssimazione della funzione cos(x).
La sintassi del primo la seguente
Per costruire una tabella di 5 valori possiamo utilizzare la sequenza di istruzioni
>> x = linspace(0,pi,5);
for Indice=Espressione
>> y = (15120-6900*x.^2+313*x.^4)./(15120+660.*x.^2+13.*x.^4);
>> [x y] blocco di istruzioni
end
ans =
0 1.0000 Dove Indice una quantit che assume diversi valori a seconda di Espressione.
0.7854 0.7071
1.5708 0.0000 Esistono numerose possibilit a questo proposito, e senza avere la pretesa di essere esaustivi ci limiteremo a
2.3562 -0.7057
3.1416 -0.9821 considerare alcuni esempi.

PAGINA 33 PAGINA 34

Introduzione a MATLAB Introduzione a MATLAB


Esempio Valore medio di vettori e matrici Non obbligatorio, ma fortemente consigliato, scrivere il blocco di istruzioni allinterno del ciclo
Consideriamo il semplice problema del calcolo del valore medio di un vettore o di una matrice. Dato un allineandolo con lespressione che governa il ciclo.
vettore x di n componenti il valore medio definito come
Questo modo di procedere, che utilizzeremo anche in seguito, consente di evidenziare bene le parti di codice
che vengono eseguite nei cicli o sotto opportune condizioni.

Analogamente nel caso di una matrice m n il valore medio sar In particolare luso del ciclo for pu essere evitato utilizzando la funzione MATLAB sum nella forma

somma=sum(x)

Nel caso di un vettore tale risultato pu essere ottenuto con la seguente funzione che assegna alla variabile somma la somma degli elementi del vettore x.

function m=mediav(x) Si confronti la funzione mediav con la funzione mean predefinita in MATLAB.
% Sintassi m=mediav(x)
% Calcola la media del vettore x
n=length(x);
somma=0;
for i=1:n
somma=somma+x(i);
end
m=somma/n;

PAGINA 35 PAGINA 36
Introduzione a MATLAB Introduzione a MATLAB
Vediamo ora una funzione per calcolare in maniera analoga per calcolare la media di una matrice. Gli esempi precedenti hanno la caratteristica di ripetere un blocco di istruzioni un numero prefissato di volte.
In molte circostanze si ha la necessit di ripetere un certo numero di operazioni diverse volte a seconda che
function M=mediam(A) una certa condizione sia verificata oppure no. In questo caso si utilizza il costrutto
% Sintassi M=mediam(A)
% Calcola la media della matrice A
% while Condizione
[m,n]=size(A); blocco di istruzioni
somma=0; end
for i=1:m
for j=1:n
somma=somma+A(i,j); Dove Condizione unespressione che MATLAB valuta numericamente e che viene interpretata come vera
end
se diversa da zero.
end
M=somma/(m*n);

I due cicli for sono annidati luno allinterno dellaltro ed il blocco principale di istruzioni viene eseguito
m per n volte. Per utilizzarla si pu scrivere

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


>> media(A)
ans=
5
PAGINA 37 PAGINA 38

Introduzione a MATLAB Introduzione a MATLAB


Attenzione a non confondere loperatore relazionale == che confronta il valore della variabile a sinistra
delloperatore con quello della variabile a destra, con loperatore di assegnazione = che invece assegna il
valore della quantit alla destra delloperatore alla variabile a sinistra dello stesso (vedi Tabella).

PAGINA 39 PAGINA 40

Introduzione a MATLAB Introduzione a MATLAB


Va notato che MATLAB, come linguaggio di programmazione, un linguaggio interpretato e solo La sintassi del comando
recentemente sono stati introdotti opportuni compilatori.
Lefficienza e la velocit saranno quindi ridotte rispetto agli usuali programmi scritti in linguaggi ad alto
livello, come il C o il Fortran, e compilati. switch Espressione
case Valore1
Lultimo costrutto MATLAB che andremo ad analizzare una struttura di confronto analoga a blocco di istruzioni
case Valore2
if...else...end. blocco di istruzioni
...
Tale struttura nella forma otherwise
blocco di istruzioni
switch...case...end end

risulta particolarmente utile qualora si debbano eseguire numerose scelte di tipo esclusivo (se una I blocchi di istruzioni sono eseguiti solo se lEspressione assume il corrispondente Valore.
verificata le altre sono false).
Lultimo blocco di istruzioni sar eseguito solo nel caso in cui Espressione non abbia assunto nessuno dei
precedenti valori.

PAGINA 41 PAGINA 42
Introduzione a MATLAB Introduzione a MATLAB

In matlab si lavora con file chiamati m-files. v% Questo simbolo individua una linea di commento nella stesura del file function.
In questa linea ci sono informazioni utili messe per capire il funzionamento del
Generalmente si usano quelli gi inseriti, ma a volte necessario costruirne di appositi. programma da parte dellutente, ma che non sono eseguite dal Introduzione a
MATLAB .
Gli m-files si dividono in due tipi: quelli script e quelli function. vfor Questa istruzione ripete le operazioni che seguono, fino alla parola end,
facendo incrementare lindice i di una unit dal valore iniziale fino al valore
I primi contengono semplicemente una sequenza di istruzioni matlab ed utilizzano tutte le massimo.
Esempio :
variabili gi definite in matlab (variabili globali). for i = 1:4 % (1 punto iniziale, passo 1, 4 valore massimo)
s(i) = 3*i ;
I secondi, invece, definiscono una nuova funzione matlab; essi accettano dei dati di input e end %questo crea il vettore s = (3,6,9,12)
Ci sono poi i for annidati, e ognuno di loro va sempre chiuso con un end.
restituiscono dei dati di output come risultato della loro elaborazione. Le variabili che si Esempio :
A = zeros(10)
usano qui sono locali, e cio nascono e muoiono nella function e non in matlab. Gli m-files for i = 1:10 % indice di riga
for j = 1:10 % indice di colonna
vengono scritti nelleditor, che una finestra predisposta a questa funzione. A(i,j) = i+j ;
end
end
PAGINA 43 PAGINA 44

Introduzione a MATLAB Introduzione a MATLAB

vif Sono usati in questo modo: Esempio:


else if relazione n
elseif istruzione 1 Scrivere il programma per fare 2i 2 sin( i )
elseif i =1

istruzione 2 Script
else
istruzione 3 n = input('assegna n :');
end s=0 % (inizializza la somma)
for i = 1: n
Se listruzione 3 vuota lelse si pu omettere. s = s+2*i^2*sin(i);
end
vwhile E usato in questo modo: s %(mettendo s qui ritorna subito il risultato)
while relazione Function
operazione
end function s = somma(n)
Questa istruzione ripete le operazioni che si trovano fra la relazione e s=0;
lend fino a quando la relazione verificata. for i = 1: n
s = s+2*i^2*sin(i);
end
PAGINA 45 PAGINA 46

Introduzione a MATLAB Introduzione a MATLAB

Es. FUNCTION
Grafici
function y = sind(x)
% La visualizzazione grafica dei dati pu essere fatta mediante varie funzioni. Tra le pi utilizzate ci sono:
% SIND(X) seno degli elementi di x espressi in
% gradi
% x = 0:pi/100:2*pi;
y=sin(pi*x/180); plot y = sin(x);
plot(x,y)
xlabel('x = 0:2\pi', 'FontSize',14)
ylabel('Sine of x', 'FontSize',14)
La funzione sind si esegue cos: title('Plot of the Sine Function','FontSize',18)

alpha=[0:1:90];
beta=sind(alpha)

Le variabili x e y nella funzione sono locali

% : il testo che segue sulla linea tutto commento ed anche il testo che appare come spiegazione con tante opzioni sul tipo di linea del grafico, sul colore, .
allhelp della funzione sind

PAGINA 47 PAGINA 48
Introduzione a MATLAB Introduzione a MATLAB

Grafico con legenda

y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend('sin(x)','sin(x-.25)','sin(x-.5)')

Grafico con marks

x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),'r:',x2,sin(x2),'r+')

PAGINA 49 PAGINA 50

Introduzione a MATLAB Introduzione a MATLAB


Sottografici e grafici multidimensionali

Spesso ci si pone il problema di disegnare diversi grafici separati in una stessa finestra. Lobiettivo pu
essere raggiunto facilmente utilizzando la funzione subplot la cui sintassi

subplot(Righe, Colonne, Sottofinestra)

dove Righe e Colonne definiscono la struttura della matrice di sottofinestre grafiche allinterno della finestra
grafica principale e Sottofinestra indica il numero della sottofinestra grafica attiva. Consideriamo a titolo di
esempio listruzione subplot(2,3,4). Tale istruzione suddivide la finestra in una matrice 2 3 di sottofinestre
ed attiva la quarta sottofinestra grafica. Le sottofinestre sono numerate come segue

PAGINA 51 PAGINA 52

Introduzione a MATLAB Introduzione a MATLAB


Le capacit grafiche di MATLAB consentono di produrre grafici di funzioni in pi variabili, ossia >> [X,Y]=meshgrid(x,y)
rappresentazioni grafiche di array a pi indici. Cos come una funzione di una variabile y = f(x) definisce X=
una curva nel piano, una funzione di due variabili indipendenti z = f(x, y) definisce una superficie nello 0 0.2500 0.5000 0.7500 1.0000
spazio tridimensionale. 0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
Esempio (Un semplice grafico di superficie) 0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
Consideriamo la funzione Y=
00000
z = x(1 x)y(1 y), 0.2500 0.2500 0.2500 0.2500 0.2500
0.5000 0.5000 0.5000 0.5000 0.5000
nel dominio rettangolare 0 <=x <=1, 0 <=y <=1. 0.7500 0.7500 0.7500 0.7500 0.7500
1.0000 1.0000 1.0000 1.0000 1.0000
Per costruirne il grafico della superficie dobbiamo innanzitutto definire la griglia di valori (x, y) nei quali
valuteremo la nostra funzione z = f(x, y). Per costruire la griglia di valori possiamo utilizzare la funzione La funzione costruisce due matrici m n
meshgrid nella forma

>> n=5;m=5;
>> x=linspace(0,1,n);
>> y=linspace(0,1,m);

PAGINA 53 PAGINA 54
Introduzione a MATLAB Introduzione a MATLAB
Per creare il grafico della superficie `e sufficiente aggiungere le istruzioni La funzione principale quindi surf che ha la seguente sintassi

>> Z = X.*(1-X).*Y.*(1-Y); surf(Matrice1, Matrice2, Matrice3)


>> surf(X,Y,Z);
>> xlabel(x);ylabel(y);zlabel(z);
dove Matrice1 e Matrice2 sono matrici quadrate contenenti i valori delle variabili x e y, mentre Matrice3
Si noti che la matrice Z avr la propriet che Z(i, j) = f(X(i, j), Y (i, j)). una matrice quadrata tale che lelemento di indici i, j dato da f(x(i), y(j)). Esistono inoltre altre forme per
utilizzare la funzione e si rimanda al solito allhelp in linea.

Il grafico di superfici pu essere personalizzato in diversi modi.

Oltre alle opzioni precedentemente discusse, ossia axis, title, xlabel, ylabel e zlabel, `e possibile cambiare il
colore, langolo di visualizzazione e realizzare grafici di tipo differente. Spesso risulta utile avere una
rappresentazione bidimensionale della superficie, analoga a quella comunemente utilizzata nella
realizzazione di mappe topografiche.

PAGINA 55 PAGINA 56

Introduzione a MATLAB Introduzione a MATLAB


Utilizzando le matrici X, Y e Z costruite in precedenza basta sostituire listruzione surf con

>> contour(X,Y,Z);
Grafico della funzione sinc= sin(r)/r.
In Figura possiamo confrontare il risultato grafico ottenuto con le funzioni surf e contour. Il grafico mostra
le curve di livello della funzione, ossia le curve sulle quali z = f(x, y) risulta costante. [X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z,'EdgeColor','black')

Grafico a colori

surf(X,Y,Z)
colorbar

Animazione grafica:

vibes

PAGINA 57 PAGINA 58

Introduzione a MATLAB Introduzione a MATLAB

plot(v) Con questo comando si disegna un grafico discreto del vettore v.


Esempio: Operatori e funzioni matematiche varie
dato v=[7 0 3 2 6 8 1]
Operatori aritmetici base +, -, *, /
si ha il seguente grafico: Potenza ^
8
Trasposizione (coniugato)
7
Radice quadrata sqrt
6
Logaritmo base 10 e e log10 - log
ex exp
5
Valore assoluto abs
4
Parte reale e immaginaria real, imag
3
Coniugato conj
2
Funzione segno sign
1
(possono anche essere usate su matrici e vettori)
0
1 2 3 4 5 6 7

in cui sulle ordinate si ha il valore della componente del vettore,


mentre sulle ascisse la sua posizione.

PAGINA 59 PAGINA 60
Introduzione a MATLAB Introduzione a MATLAB

Il risultato di unespressione pu essere assegnato a una variabile: Workspace

Le variabili vengono conservate nellarea di memoria Workspace fino a esplicita cancellazione o fino
variabile = espressione; alluscita da MATLAB:
whos
se non viene dato nessun nome di variabile il risultato viene assegnato alla variabile ans who Name Size Bytes Class
Your variables x 1x1 8 double array
se viene messo un ; alla fine allora il risultato delloperazione non viene mostrato are: y 1x1 8 double array
x y

Es. 12*3 x=12*3;


x=12*3 Le variabili sono richiamabili con il loro nome:
x= ans =
36 36 x
x=
25

PAGINA 61 PAGINA 62

Introduzione a MATLAB Introduzione a MATLAB

v save Serve a salvare le variabili in matlab alla fine del lavoro, e si usa cos: v who Visualizza solo il nome delle variabili che si stanno usando dallinizio della
sessione.
save nomefile lista variabili (senza virgole)

a) se in nomefile non si mette, allora salva tutte le variabili.


v whos Visualizza il nome e le caratteristiche delle variabili che si stanno usando
b) se si vogliono salvare solo alcune variabili, allora in nomefile si mettono i nomi delle
variabili interessate, ed esse verranno salvate nel file nomefile.mat. dallinizio della sessione.
v load Serve per caricare le variabili che vengono scritte dopo load e che sono state salvate in
nomefile.mat, o in un altro file con estensione mat.
v help x Permette di ottenere tutte le informazioni sulle operazioni che si possono
Il Workspace (o una sua parte) pu essere cancellato:
effettuare con il comando x . Queste informazioni vengono date nella finestra
di lavoro di matlab.
clear variabile1
v doc x Permette di ottenere tutte le informazioni sulle operazioni che si possono
Es. x=28 effettuare con il comando x . Queste operazioni vengono date in una finestra
x=
28 (non di matlab) dalla quale si pu accedere direttamente alla spiegazione di
clear x altri comandi. Usando questa istruzione la spiegazione del comando x
x
??? Undefined function or variable 'x'. seguita anche da esempi.

PAGINA 63 PAGINA 64

Introduzione a MATLAB Introduzione a MATLAB

v format long Permette di visualizzare sullo schermo i numeri in un formato con pi cifre v path Questo comando serve a far vedere il percorso attraverso il quale
possibile accedere al file desiderato
decimali.
v format short Permette di ritornare (dopo aver utilizzato format long) al formato con cifre
decimali che sono in default. Si pu utilizzare semplicemente anche format. Per vedere/modificare la directory corrente:
v eps E il comando che d la precisione di macchina, cio il pi piccolo numero cd
macchina u per cui (in operazione macchina) si ha 1+u > 1.

Per vedere/modificare il search path:

Selezionare Set Path dal File menu,

PAGINA 65 PAGINA 66
Introduzione a MATLAB Introduzione a MATLAB
La sintassi della funzione disp la seguente Nel secondo caso largomento un vettore riga di stringhe, che vengono cos concatenate. Se vogliamo
costruire vettori colonna importante ricordarsi che le stringhe devono avere tutte la stessa dimensione
disp(stringa di caratteri)
>> disp([Gennaio ;Febbraio;Marzo ])
dove stringa di caratteri rappresenta un array di stringhe di tipo vettore o matrice, dove ogni stringa Gennaio
racchiusa tra apici. Ad esempio potremo scrivere Febbraio
Marzo
>> disp(Oggi e lunedi) cosa che pu essere facilmente ottenuta inserendo un opportuno numero di spazi.
oggi e lunedi
In molte circostanze si ha inoltre la necessit di rappresentare valori numerici in uscita.
>> disp([Gennaio ,Febbraio ,Marzo]) Vediamo due differenti possibilit, la prima tramite il seguente esempio
Gennaio Febbraio Marzo
>> x=10;
Osserviamo che per utilizzare i simboli di apostrofo/accento allinterno della stringa si deve utilizzare il >> stringa = [x = , num2str(x)];
simbolo come delimitatore per evitare conflitti con il segnale di inizio e fine della stringa. >> disp(stringa)
x = 10

PAGINA 67 PAGINA 68

Introduzione a MATLAB Introduzione a MATLAB


In questo caso abbiamo utilizzato la funzione num2str che consente di convertire una variabile numerica in Potremo quindi scrivere per esempio
una stringa.
Un modo pi versatile di costruire stringhe di caratteri per loutput di testo con formato fornito dalle >> x=10;y=5.5;
funzioni fprintf e sprintf mutuate direttamente dal linguaggio C.
>> fprintf(x = %d e y= %f\n,x,y);
La sintassi della prima del tipo
x = 10 e y= 5.500000
fprint(Fid, Formato, Variabili)
>> stringa=sprintf(x = %d e y= %f\n,x,y);
dove Formato una stringa di testo che tramite luso di caratteri speciali indica il tipo di formato delloutput, >> disp(stringa)
Variabili una lista opzionale di variabili separate da una virgola e che hanno un corrispondente allinterno x = 10 e y= 5.500000
della stringa Formato. Infine Fid un identificatore opzionale del file al quale loutput inviato.
La stringa di formato contiene codici che specificano il tipo di variabile che deve essere convertita in stringa
La funzione sprintf ha invece la sintassi
e rappresentata sullo schermo del calcolatore o su file. il formato %d serve a visualizzare un numero intero,
Stringa = sprint(Formato, Variabili) mentre il formato %f `e utilizzato per i numeri reali.

dove in questo caso loutput viene indirizzato su una stringa di testo.

PAGINA 69 PAGINA 70

Introduzione a MATLAB Introduzione a MATLAB


Esempio: Salvare una semplice tabella di valori
Abbiamo gi visto in precedenza come costruire una semplice tabella di valori per le funzioni seno e coseno.
Uno script file che realizza tale tabella utilizzando una migliore visualizzazione il seguente

% tabcossin.m
% Realizza una tabella di valori di coseno e seno
%
n=input(Inserisci il numero di valori ? : );
x=linspace(0,pi,n);
c=cos(x);
s=sin(x);
disp(------------------------------------------);
fprintf(k\t x(k)\t cos(x(k))\t sin(x(k))\n);
disp(------------------------------------------);
fprintf(%d\t %3.2f\t %6.5f\t %6.5f\n,[1:n;x;c;s]);

PAGINA 71 PAGINA 72
Introduzione a MATLAB Introduzione a MATLAB
che produce il seguente output La funzione input stata utilizzata per assegnare un valore al numero di punti n.

La sintassi della funzione :

Variabile=input(Stringa di caratteri)

ed attende un ingresso da tastiera di unespressione MATLAB da assegnare a Variabile.

Il valore assegnato potr quindi essere di tipo scalare, vettore oppure matrice utilizzando la sintassi standard
di MATLAB.

PAGINA 73 PAGINA 74

Introduzione a MATLAB Introduzione a MATLAB


Il modo pi semplice di salvare una copia della precedente tabella consiste nellutilizzo del comando diary Un modo sicuramente pi versatile di registrare dati su file fornito dal comando save.
che trasferisce su file tutto ci che compare nella finestra di comando di MATLAB. La sintassi del comando
Il seguente script costruisce un file di testo tabella.dat contenente solo i valori della precedente tabella (non
tutta la sessione di lavoro come prima).
diary Nomefile
% salvavalori.m
per attivare la copia sul file di testo chiamato Nomefile di tutto ci che comparir sulla finestra di comando % Esempio di output su file con save
fino a quando non verr dato il comando diary off per ripristinare la situazione originale. %
n=input(Inserisci il numero di valori: );
Ad esempio il seguente script costruisce la tabella visualizzata in precedenza in un file di testo chiamato x=linspace(0,pi,n);
tabella.txt c=cos(x);
s=sin(x);
% salvatabella.m z=1:n;
% Esempio di uso della funzione diary save tabella.dat z x c s -ascii
%
diary tabella.txt
tabcossin
diary off

PAGINA 75 PAGINA 76

Introduzione a MATLAB Introduzione a MATLAB


Il comando save consente di registrare alcune variabili presenti nella memoria di MATLAB su file secondo dove abbiamo usato il comando
la sintassi

save Nomefile Elenco Variabili Formato load Nomefile Formato

dove Formato un parametro opzionale. Se tale parametro omesso il file salvato in formato binario e
qualora il file non abbia estensione a questo aggiunta lestensione .mat. Il formato -ascii consente di per leggere il file. Se vogliamo leggere un file di testo che non ha estensione allora luso del formato -ascii
salvare file in modalit testo. Potremo leggere la precedente tabella tramite il seguente
obbligatorio anche in lettura, altrimenti opzionale. Si noti che MATLAB crea una matrice contenente i
% visualizzavalori.m valori precedentemente registrati ed a questa assegna il nome del file in lettura.
% Esempio di input da file con load
%
load tabella.dat Nellesempio precedente listruzione load tabella.dat legge i valori presenti nel file tabella.dat e li assegna ad
A=tabella;
una matrice chiamata tabella. La riga successiva A=tabella assegna la matrice di valori alla variabile A.
disp(------------------------------------------);
fprintf(k\t x(k)\t cos(x(k))\t sin(x(k))\n);
disp(------------------------------------------);
fprintf(%d\t %3.2f\t %6.5f\t %6.5f\n,A);

PAGINA 77 PAGINA 78
Introduzione a MATLAB Introduzione a MATLAB
Toolboxes
Help
Esistono m-files forniti insieme a
MATLAB e raggruppati in Toolboxes per Al prompt di MATLAB:
funzione/argomento, ad esempio:
>> help per vedere la lista dei toolboxes installati
>> help nome_toolbox per vedere la lista dei comandi installati in un toolbox
>> help nome_comando guida on-line di MATLAB sullo specifico comando
>> ver info sulla versione di MATLAB
>> helpwin finestra di help di MATLAB

Matlab case sensitive, cio fa distinzione fra lettere


ATTENZIONE
minuscole e maiuscole, perci si ha B b.

PAGINA 79 PAGINA 80

Introduzione a MATLAB Introduzione a MATLAB


Simulink Simulink

Cos SIMULINK?
SIMULINK un ambiente con interfaccia grafica allinterno di MATLAB per la
un tool di MATLAB interattivo, con potente interfaccia grafica per la simulazione modellizzazione e la simulazione di sistemi dinamici (rappresentati come schemi a
dinamica modulare di sistemi blocchi);

si interfaccia input/output con MATLAB: le variabili SIMULINK sono disponibili in


MATLAB (attraverso il Workspace) Modelli SIMULINK possono anche essere lanciati direttamente da MATLAB o

ha una libreria di modelli predefiniti a cui si possono aggiungere blocchi nuovi definiti attraverso m-files
dallutente

PAGINA 81 PAGINA 82

Introduzione a MATLAB
Simulink Introduzione a MATLAB
Simulink

Quali sistemi possono essere simulati?


1. Sistemi a tempo discreto
2. Sistemi a tempo continuo
3. Sistemi misti continuo/discreto

Lineari, non-lineari, mono o multi-variabili.

La libreria di blocchi

La liberia di SIMULINK divisa in gruppi per funzione

PAGINA 83 PAGINA 84
Introduzione a MATLAB Introduzione a MATLAB
Simulink Simulink

Simulazione di una sistema dinamico Avvio/Uscita

In generale, i passi da fare per simulare un sistema sono i seguenti: MATLAB doppio click sullicona o sul file eseguibile matlab.exe e compare
il prompt >>
modellizzazione matematica del sistema fisico (eq. differenziali, ad esempio) SIMULINK >> simulink
scelta di un algoritmo di soluzione numerica
Comando specifico >> nome_comando
codifica dellalgoritmo di soluzione
assegnamento di condizioni iniziali, ingressi e parametri
Uscita da MATLAB >> quit (exit)
simulazione dinamica
visualizzazione dei transitori e analisi dei risultati

PAGINA 85 PAGINA 86

Introduzione a MATLAB Introduzione a MATLAB


Simulink Simulink

Definizione di modelli SIMULINK

q modalit grafica (il modello viene poi salvato come file *.mdl)
q descrizione Matlab del modello (*.m) [s-functions]
q descrizione del modello come programma C e traduzione in un file Matlab *.cmex

le s-functions possono essere poi utilizzate direttamente come blocchi Simulink (per
descrivere modelli complessi e non presenti gi in libreria)

in tutti e 3 i casi la simulazione pu essere lanciata direttamente da MATLAB con il comando


sim

PAGINA 87 PAGINA 88

Introduzione a MATLAB Introduzione a MATLAB


Simulink Simulink

PAGINA 89 PAGINA 90
Introduzione a MATLAB Introduzione a MATLAB
Simulink Simulink

Il Simulation Parameters Dialog Box


I solver disponibili sono:
Il Simulation Parameters Dialog Box consente di:
Fixed-step continuous solvers
Fissare gli istanti di start e stop della simulazione Variable-step continuous solvers

Scegliere il solver e specificare i suoi parametri Fixed-step discrete solver


Variable-step discrete solver
Selezionare le opzioni sulloutput
Alcuni metodi di integrazione (fixed-step solver)
La simulazione di un modello Simulink impone il
calcolo dei suoi ingressi, uscite, e stati a intervalli ode5, the Dormand-Prince formula
dallistante di partenza a quello di fine della ode4, RK4, the fourth-order Runge-Kutta formula
simulazione.
Simulink usa un solver per questo task. Nessun metodo ode3, the Bogacki-Shampine formula
per risolvere un modello adatto per tutti i modelli. ode2, Heun's method, also known as the improved Euler formula
Simulink comunque fornisce un assortimento di
solvers, ciascuno adatto per risolvere uno specifico tipo ode1, Euler's method
di modello.
PAGINA 91 PAGINA 92

Matlab Matlab
SimPowerSystems Simulink

SimPowerSystems usa lambiente Simulink, consentendo di creare un modello


usando la semplice procedure di click and drag.

Non solo possibile disegnare la tipologia di un circuito rapidamente, ma possono


essere analizzate anche le interazioni con sistemi meccanici, sistemi di controllo.
Questo possibile grazie al fatto che tutte le parti elettriche della simulazione
possono interagire con gli elementi della libreria di Simulink.

Poich Simulink usa MATLAB come motore computazionale, possible anche


usare MATLAB toolboxes and Simulink blocksets.

PAGINA 93 PAGINA 94

Matlab Matlab
Simulink Simulink

PAGINA 95 PAGINA 96
Matlab Matlab
Simulink Simulink

PAGINA 97 PAGINA 98

Matlab Matlab
Simulink Simulink

PAGINA 99 PAGINA 100

Matlab Matlab
Simulink Simulink

PAGINA 101 PAGINA 102


Matlab Matlab
Simulink Simulink
% -------------------------------
% Problem constant
% -------------------------------
% converst radians to degrees
r2d = 180/pi;
% -------------------------------
% Define the house geometry
% -------------------------------
% House length = 30 m
lenHouse = 30;
% House width = 10 m
widHouse = 10;
% House height = 4 m
htHouse = 4;
% Roof pitch = 40 deg
pitRoof = 40/r2d;
% Number of windows = 6
numWindows = 6;
% Height of windows = 1 m
PAGINA 103 PAGINA 104

Matlab Matlab
Simulink Simulink
htWindows = 1; % -------------------------------
% Width of windows = 1 m % Determine the equivalent thermal resistance for the whole building
widWindows = 1; % -------------------------------
windowArea = numWindows*htWindows*widWindows; Req = RWall*RWindow/(RWall + RWindow);
wallArea = 2*lenHouse*htHouse + 2*widHouse*htHouse + ... % c = cp of air (273 K) = 1005.4 J/kg-K
2*(1/cos(pitRoof/2))*widHouse*lenHouse + ... c = 1005.4;
tan(pitRoof)*widHouse - windowArea; % -------------------------------
% ------------------------------- % Enter the temperature of the heated air
% Define the type of insulation used % -------------------------------
% ------------------------------- % The air exiting the heater has a constant temperature which is a heater
% Glass wool in the walls, 0.2 m thick % property. THeater = 50 deg C
% k is in units of J/sec/m/C - convert to J/hr/m/C multiplying by 3600 THeater = 50;
kWall = 0.038*3600; % hour is the time unit % Air flow rate Mdot = 1 kg/sec = 3600 kg/hr
LWall = .2; Mdot = 3600; % hour is the time unit
RWall = LWall/(kWall*wallArea); % -------------------------------
% Glass windows, 0.01 m thick % Determine total internal air mass = M
kWindow = 0.78*3600; % hour is the time unit % -------------------------------
LWindow = .01; % Density of air at sea level = 1.2250 kg/m^3
RWindow = LWindow/(kWindow*windowArea); densAir = 1.2250;
PAGINA 105 PAGINA 106

Matlab Matlab
Simulink Simulink

M = (lenHouse*widHouse*htHouse+tan(pitRoof)*widHouse*lenHouse)*densAir;
% -------------------------------
% Enter the cost of electricity and initial internal temperature
% -------------------------------
% Assume the cost of electricity is $0.09 per kilowatt/hour
% Assume all electric energy is transformed to heat energy
% 1 kW-hr = 3.6e6 J
% cost = $0.09 per 3.6e6 J
cost = 0.09/3.6e6;
% TinIC = initial indoor temperature = 20 deg C
TinIC = 20;

PAGINA 107 PAGINA 108


Matlab Matlab
Simulink Simulink

PAGINA 109 PAGINA 110

Matlab Matlab
Simulink Simulink

PAGINA 111 PAGINA 112

Matlab Matlab
Simulink Simulink

PAGINA 113 PAGINA 114


Matlab Matlab
Simulink Simulink

PAGINA 115 PAGINA 116

Matlab Matlab
Simulink Simulink

1. Valutare il costo al variare:

1a. della geometria della casa


1b. del tipo di isolamento
1c. delle caratteristiche del sistema di riscaldamento
1d. della temperatura esterna

2. Sostituire il sistema di riscaldamento con un sistema di raffreddamento

3. Calcolare il consumo in kWh del sistema di riscaldamento e del sistema di raffreddamento

4. Calcolare la potenza in kW del sistema di riscaldamento e del sistema di raffreddamento

PAGINA 117 PAGINA 118