laboratorio di matlab - dii.unisi.itcontrol/matlab/slides_labmatlab07.pdf · 4 5 6 laboratorio...
Post on 11-Oct-2018
218 Views
Preview:
TRANSCRIPT
DII – Universita di Siena
Laboratorio di MATLAB
Fabio Morbidi
Dipartimento di Ingegneria dell’Informazione,
Universita di Siena
morbidi@dii.unisi.it
http://www.dii.unisi.it/∼control/MatLab/LabMatlab.html
Luglio 2007
Programma Lab. Matlab
Lun 09/07 ore 14.00-18.00 start up, funzioni di base
Mer 11/07 ore 14.00-18.00 m-files, grafica
Lun 16/07 ore 14.00-18.00 controllo di flusso, functions, esercitazione 1
Mer 18/07 ore 14.00-18.00 Symbolic toolbox, Control system toolbox
Lun 23/07 ore 9.00-13.00 Simulink, esercitazione 2
Mer 25/07 ore 9.00-13.00 Idoneita
Testo di riferimento: “Guida operativa a MATLAB SIMULINK e Control Toolbox ”,
A. Cavallo, R. Setola, F. Vasca, Liguori Editore, 1994.
Indice
1 Start up 2
1.1 Vettori e Matrici . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 OPS: Operatori e caratteri speciali . . . . . . . . . . . . . . . . . . 7
1.2.1 operatori aritmetici . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 operatori relazionali . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 operatori logici . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Funzioni matriciali . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1 matrici elementari . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2 informazioni sulle matrici . . . . . . . . . . . . . . . . . . . 10
1.3.3 manipolazione di matrici . . . . . . . . . . . . . . . . . . . . 11
1.3.4 variabili speciali . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 funzioni elementari . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.1 trigonometriche ed iperboliche . . . . . . . . . . . . . . . . 15
1.4.2 Altre funzioni . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6 Esercizio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Tipi di dato multidimensionali . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 cellarray . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.2 strutture . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.8 M-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.8.1 script files . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.8.2 gestione M-files . . . . . . . . . . . . . . . . . . . . . . . . 24
1.8.3 stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.9 Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2 Grafica 29
2.1 Grafica 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.1.1 funzioni correlate . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.2 Traiettorie in R3 . . . . . . . . . . . . . . . . . . . . . . . . 36
2.1.3 Superfici . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.4 Esercizio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.5 Esercizio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3 Istruzioni di controllo di flusso 41
3.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 Esercizio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4 Function 51
4.1 Esercizio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Esercizio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5 Symbolic toolbox 54
5.1 funzioni di base . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2 Calcolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.1 derivate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.2 integrali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.3 limiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Algebra lineare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3.1 inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3.2 determinante . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3.3 autovalori . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4 Semplificazione di espressioni algebriche . . . . . . . . . . . . . . . 64
5.5 Soluzione di equazioni . . . . . . . . . . . . . . . . . . . . . . . . 66
5.6 Grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.6.1 ezplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.6.2 ezplot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.6.3 ezmesh, ezsurf . . . . . . . . . . . . . . . . . . . . . . . . 70
5.7 Esercizio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6 Control system toolbox 72
6.1 funzioni principali . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.1.1 tf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.1.2 zpk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.1.3 ss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.1.4 pole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.1.5 zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.1.6 dcgain . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.1.7 impulse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.1.8 step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1.9 c2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.10 d2c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.11 ctrb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.12 obsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.13 bode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.14 nyquist . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.15 ltiview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7 Altri toolbox di Matlab 81
8 Simulink 83
8.1 Operazioni di base . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.2 blocchi standard . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.2.1 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.2.2 Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.2.3 Continuous . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.2.4 Discrete . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.2.5 Math Operation . . . . . . . . . . . . . . . . . . . . . . . . 90
8.2.6 Signal Routing . . . . . . . . . . . . . . . . . . . . . . . . 91
8.2.7 User-Defined Functions . . . . . . . . . . . . . . . . . . . . 91
8.2.8 Discontinuities . . . . . . . . . . . . . . . . . . . . . . . . 92
8.2.9 Subsystems . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.3 Esercizio 9 - Simulink . . . . . . . . . . . . . . . . . . . . . . . . 93
8.4 Esercizio 10 - Simulink . . . . . . . . . . . . . . . . . . . . . . . 94
8.5 Esercizio 11 - Simulink . . . . . . . . . . . . . . . . . . . . . . . 95
DII 2
Start up
MATLAB = Matrix Laboratory
• aprire e chiudere Matlab
• interfaccia grafica
• directory path:
>>cd
>>cd ..
>>cd(’percorso_directory’)
oppure usare current directory browser.
Laboratorio MATLAB
DII 3
• assegnazione di uno scalare
>> a=3;
>> a=3
a =
3
• work space
visualizzazione delle variabili nel workspace:
>>who visualizza tutte le variabili
>>whos visualizza tutte le variabili con descrizione di struttura
eliminazione delle variabili dal workspace:
>>clear
>>clear a;
oppure usare workspace browser.
Laboratorio MATLAB
DII 4
• ans:
ans e il nome della risposta piu recente (most recent answer),
e quindi una variabile che vive nel work space.
• richiamo comandi:
↑ richiama ultimo comando
s+↑ richiama l’ultimo comando che inizia con la stringa s.
oppure usare command history browser.
• salvataggio dati:
save filename var1 var2 ... crea il file filename.mat
contente i dati relativi alle variabili var1 var2 ...
(filename deve essere una stringa).
• caricamento dati:
load ’file_dati.mat’ carica nel workspace tutti i dati
contenuti in file_dati.mat .
Laboratorio MATLAB
DII 5
Vettori e Matrici
>>v=[1 2 3]; vettore riga
v =
1 2 3
>>v=[1;2;3]; vettore colonna
v =
1
2
3
Laboratorio MATLAB
DII 6
>>A=[1 2 3;4 5 6;7 8 9]; matrice
oppure
>>A=[1 2 3; ←4 5 6; ←7 8 9];
A =
1 2 3
4 5 6
7 8 9
Attenzione: i nomi delle variabili sono case sensitive: si distingue tra lettere
maiuscole e minuscole !!
Provare a generare matrici, vettori, scalari ...
Laboratorio MATLAB
DII 7
OPS: Operatori e caratteri speciali
operatori aritmetici
operatore scalare matrice
+ a + b (A + B)ij = Aij + Bij
− a− b (A−B)ij = Aij −Bij
∗ a ∗ b A ∗B
/ a/b = ab
A/B = A ∗B−1
\ a\b = ba
A\B = A−1 ∗B
.∗ non interessante (A. ∗B)ij = Aij ∗Bij
./ non interessante (A./B)ij =Aij
Bij
.\ non interessante (A.\B)ij =Bij
Aij
Attenzione: Prodotti matriciali righe per colonne: dimensioni concordi!!!
Laboratorio MATLAB
DII 8
operatori relazionali
• non esistono variabili booleane
• 0 : falso
• tutto cio che e 6= 0 e vero
operatori == ∼= > < >= <=
significato = 6= > < ≥ ≤
• Ogni operatore restituisce 1 se e vera la relazione, 0 se e falsa.
• Tra matrici le dimensioni devono essere concordi, (A op B)ij = Aij op Bij .
• Matrici e scalari, (A op b)ij = Aij op b
Laboratorio MATLAB
DII 9
operatori logici
simbolo & | ∼significato and or not
• a op b restituisce 1 se e vero, 0 se e falso
• Tra matrici le dimensioni devono essere concordi, (A op B)ij = Aij op Bij .
• Matrici e scalari, (A op b)ij = Aij op b
Questi sono solo alcuni operatori: digitare al prompt
help ops
provare ad utilizzare gli operatori ...
Laboratorio MATLAB
DII 10
Funzioni matriciali
matrici elementari
• A=zeros(m,n) matrice di 0 con mrighe e n colonne
• A=ones(m,n) matrice di 1 con mrighe e n colonne
• A=eye(n) matrice identita di dimensione n×n
informazioni sulle matrici
• [m,n]=size(A) ritorna le dimensioni m,n della matrice A ∈ Rm×n
• M=length(A) ritorna la dimensione massima di A ∈ Rm×n
• isequal(A,B) ritorna 1 se A=B, 0 altrimenti
Laboratorio MATLAB
DII 11
manipolazione di matrici
• A=diag(v);
A =
v1 0 · · · 0
0 v2 · · · 0...
.... . .
...
0 0 · · · vn
• a=min:passo:max
Definisce un vettore a di n = max-minpasso + 1 elementi
con a(1)=min , a(n)=max .
• sottomatrici
A(v_row,v_col) seleziona la sottomatrice corrispondente agli indici di
riga e di colonna definiti rispettivamente nei vettori v_row e v_col .
Ad es. A(1:4,2:3) seleziona la sottomatrice 4× 2 che ha elementi nelle
righe 1 : 4 e colonne 2 : 3.
Laboratorio MATLAB
DII 12
• B=A’ assegna a B il trasposto di A, cioe B = AT .
• concatenazione orizzontale :
A=[B1,B2,...,Bn] oppure A=[B1 B2 ... Bn] assegna alla
matrice A la concatenazione orizzontale delle matrici B1,B2,...,Bn .
• concatenazione verticale :
A=[B1;B2;...;Bn] assegna alla matrice A la concatenazione verticale
delle matrici B1,B2,...,Bn .
• esempio:
>>B1=[1 2 3];
>>B2=[4 5 6];
>>A1=[B1 B2]
A1=
1 2 3 4 5 6
Laboratorio MATLAB
DII 13
>>A2=[B1;B2]
A2=
1 2 3
4 5 6
• sotto-assegnazione :
>>A2(1,:)=[1 1 1]
A2=
1 1 1
4 5 6
Laboratorio MATLAB
DII 14
variabili speciali
variabile significato
ans risposta piu recente
pi π
i unita immaginaria
inf infinito
NaN not a number, per operazioni indefinite(
tipicamente 00
)
molto di piu ...
help elmat
Laboratorio MATLAB
DII 15
funzioni elementari
trigonometriche ed iperboliche
sin(x) asin(y)
cos(x) acos(y)
tan(x) atan(y)
atan2(y,x)
sinh(x) asinh(y)
cosh(x) acosh(y)
tanh(x) atanh(y)
Attenzione: nelle funzioni trigonometriche x e espresso in radianti !!!
Laboratorio MATLAB
DII 16
Altre funzioni
istruzione significato
exp(x) ex
log(x) ln(x)
log10(x) log10(x)
log2(x) log2(x)
sqrt(x)√
x
xey x× 10y
xˆy xy
istruzione significato
abs(x) |x|imag(x) Im(x)
real(x) Re(x)
conj(x) x
sign(x) segno(x)
floor(x) ⌊x⌋ceil(x) ⌈x⌉
molto di piu ...
help elfun
Laboratorio MATLAB
DII 17
Help
• >>help
• >>help \"nome toolbox"
• >>help ops
• >>help elmat
• >>help elfun
• >>help "nome funzione" ritorna la sintassi esatta.
• help html con browser.
Laboratorio MATLAB
DII 18
Esercizio 1
1. Definire una matrice A, 3×5 di zeri (utilizzando la funzione zeros ). Definire
un vettore a di dimensione 1×5 e assegnarlo alla prima riga di A. Definire una
matrice B come la trasposta di A ed estrarne la sottomatrice C, 3×3 composta
dalla 2◦, 3◦ e 4◦ riga di B.
2. Siano A, B quelle definite al punto 1. Definire una nuova matrice D, 5×3 diversa
dalla matrice nulla. Effettuare le tre moltiplicazioni:
M1=D*A
M2=A*D
M3=moltiplicazione elemento per elemento tra De B.
Verificare con la funzione size che le dimensioni siano:
M1→ 5×5; M2→ 3×3; M3→ 5×3.
Salvare il workspace con le sole matrici A, B, C, M1, M2, M3.
Laboratorio MATLAB
DII 19
Tipi di dato multidimensionali
cellarray
• matrici i cui elementi sono array ; ogni elemento puo’ avere dimensioni diverse.
• definizione di un cell array :
C={A1 A2;B1 B2} assegna alla variabile Cun cellarray di 2×2 elementi
corrispondenti alle matrici A1,A2,B1,B2
• indicizazzione:
D=C{i,j} assegna alla variabile D l’elemento (i,j ) di C
• concatenazione orizzontale e verticale:
D=[C {A3;B3}] assegna alla variabile D la concatenazione orizzontale di
Ccon il cellarray {A3;B3}
D=[C;{A3 B3}] assegna alla variabile D la concatenazione verticale di C
con il cellarray {A3 B3}
Laboratorio MATLAB
DII 20
strutture
• matrici i cui elementi sono accessibili attraverso campi testuali; ogni campo puo
essere di tipo diverso e con dimensioni diverse
• definizione di una struttura vuota (non obbligatoria):
S=struct(’nome’,{},’cognome’,{},’matricola’,{});
assegna alla variabile S una struttura vuota caratterizzata dai tre campi:
nome cognome matricola
• assegnazione di valori ai campi:
>>S.nome=’mario’;
>>S.cognome=’rossi’;
>>S.matricola=652;
Laboratorio MATLAB
DII 21
>>S
S =
nome: ’mario’
cognome: ’rossi’
matricola: 652
• restituzione valori:
la notazione Struttura.campo restituisce il valore della struttura
per il campo specificato:
>>a=S.matricola
a= 652
Laboratorio MATLAB
DII 22
M-files
- Matlab puo eseguire sequenze di comandi da file. Questi file sono chiamati
M-file perche hanno estensione ’.m ’.
- La maggior parte del codice che produrrete sara creato e gestito tramite M-files.
- due tipi di M-files:
– script files
– function files
Laboratorio MATLAB
DII 23
script files
- Uno script file consiste di una sequenza di comandi Matlab.
- Se creo un file prova.m , e lo eseguo come un comando al prompt invocando:
>>prova (N.B. il nome del file senza l’estensione)
saranno eseguite tutte le istruzioni contenute nel file prova.m .
- Le variabili generate da uno script file sono globali e quindi andranno a finire
direttamente nel workspace della corrente sessione di Matlab, con le naturali
conseguenze.
- Un M-files puo richiamare un’altro M-files, oppure puo richiamare se stesso in
modo ricorsivo.
Laboratorio MATLAB
DII 24
gestione M-files
stringhe : s=’hello world’; quello che sta tra gli apici definisce la stringa che
viene assegnata ad s .
>>s
s = hello world
disp : i comandi disp(’hello world’) , disp(s);
producono lo stesso risultato:
hello world
cioe mostrano a schermo una stringa.
error : il comando error(s); mostra a schermo la stringa s ed interrompe
l’esecuzione dell’M-file.
input : il comando d=input(s); mostra a schermo la stringa s ed aspetta la
digitazione di un valore fino a che non viene premuto il tasto invio ← . Tale
valore viene assegnato alla variabile d (cfr. scanf del linguaggio C).
Laboratorio MATLAB
DII 25
stringhe
- S=’sequenza di caratteri’ definisce un vettore di caratteri
assegnato alla variabile S.
- funzioni correlate:
– S=char(X);
ritorna una stringa di caratteri associati ai valori di X, in codifica ASCII.
Es. >>char(123)
{
– X=double(S);
ritorna i valori numerici associati alla stringa S, in codifica ASCII
Es. >>double(’{’)
123
Laboratorio MATLAB
DII 26
– S=[S1 S2 ... Sn];
concatenazione orizzontale di n stringhe
– S=strcat(S1,S2,...,Sn);
concatenazione orizzontale di n stringhe
– S=strvcat(S1,S2,...,Sn);
concatenazione verticale di n stringhe
– S={S1 S2 ... Sn};
crea un vettore le cui componenti sono n stringhe
– ischar(S);
restituisce 1 se S e una stringa, 0 altrimenti
Laboratorio MATLAB
DII 27
– iscellstr(S);
restituisce 1 se S e un vettore di stringhe, 0 altrimenti
– S=sprintf(format,A);
genera stringhe (cfr. printf del linguaggio C).
Es. 1 :
>> s = sprintf(’La matrice ha dimensioni %dx%d.’,2,3)
s = La matrice ha dimensioni 2x3
Es. 2 :
>> s = sprintf(’%s\n’,’hello’,’word’)
s =
hello
word
Laboratorio MATLAB
DII 28
Esercizio 2
Creare uno script file che richiede:
1. Digitazione in ingresso di nome e cognome (usare la function input )
2. Concatenare nome e cognome verticalmente e orizzontalmente nelle quattro
combinazioni possibili assegnandole a quattro diverse variabili
3. Generare i vettori dei codici ASCII relativi alle lettere del nome e cognome
4. Utilizzando la function predefinita flipdim(v,2) rigirare questi ultimi e
utilizzando char calcolarne le stringhe associate s1 e s2.
5. In uscita il file deve fare il display di due frasi :
il mio nome = s1
il mio cognome = s2
6. fare in oltre la media dei codici dei caratteri nome e cognome e generare la
stringa s3 che contiene il carattere relativo.
Laboratorio MATLAB
DII 30
Grafica 2D
Si rappresentano funzioni di una variabile: y = f(x)
Es. Funzioni del tipo: c(x) = cos(x) e s(x) = sin(x)
definizione di un vettore x :
>>x=0:0.2:4*pi;
generazione delle due funzioni calcolate su x e plot:
>>c=cos(x);
>>s=sin(x);
>>figure;
>>plot(x,c);
>>figure;
>>plot(x,s);0 2 4 6 8 10 12
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
x
cos(x
)
Laboratorio MATLAB
DII 31
funzioni correlate
- h=figure genera una nuova istanza dell’oggetto figura ed assegna alla
variabile h un handle a tale figura.
- close all chiude tutte le figure aperte
- plot(x,y) plotta sul sistema Oxy tutte le coppie (xi, yi) congiungendo i
punti successivi con una linea.
- plot(x,y,’tratto|simbolo|colore’) definisce il tipo di tratto
che congiunge punti successivi, il simbolo associato ad ogni punto, il colore.
Es. plot(x,y,’--*k’)
Laboratorio MATLAB
DII 32
carattere tratto
- linea
- - tratteggio
: puntini
-. tratto punto
carattere simbolo
+ crocetta
o cerchietto
* asterisco
x ×d rombo
s quadrato
carattere colore
r rosso
g verde
b blue
c celeste
m magenta
y giallo
k nero
w bianco
molto di piu ...
vedi help plot
Laboratorio MATLAB
DII 33
- hold on abilita la sovrapposizione di piu grafici all’interno della stessa figura
- hold off disabilita la sovrapposizione di piu grafici all’interno della stessa
figura (una nuova istanza di plot elimina tutto quello che era stato tracciato
precedentemente sulla figura di riferimento).
- legend(S1,S2,...) aggiunge la legenda in base al numero di tracce:
ad ogni traccia associa la stringa Si corrispondente
- title(’Stitle’) associa la stringa Stitle al titolo della figura
- xlabel(Sx) associa la stringa Sx all’asse x
- ylabel(Sy) associa la stringa Sy all’asse y
Laboratorio MATLAB
DII 34
- axis([xmin xmax ymin ymax]) setta i limiti degli assi
- axis equal setta le stesse unita di misura e gli stessi
aspect ratio sugli assi
- axis square rende la regione di rappresentazione quadrata
- grid on aggiunge una griglia alla figura
- subplot(m,n,p) crea m×n finestre nella stessa figura e attiva la p-esima
da sinistra in alto
Laboratorio MATLAB
DII 35
0 2 4 6 8 10 12
−4
−3
−2
−1
0
1
2
3
4
sin(x) con axis equal
0 5 10 151
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1cos(x) con axis square
-
-
-
-
-
0 2 4 6 8 10 12 5
4
3
2
1
0
1
2
3
4
5tan(x) con uso di axis([ ])
_
_
_
_
_ 0 2 4 6 8 10 124
3
2
1
0
1
2
3
4uso di legend e xlabel e ylabel
asse x
y
tan(x)cos(x )sin(x )
ass
e
-
-
-
-
Laboratorio MATLAB
DII 36
Traiettorie in R3
Plot di funzioni f : R→ R3.
plot3(fx,fy,fz) visualizza le
terne (fx, fy, fz) nel sistema Oxyz
−1−0.5
00.5
1
−1
0
10
2
4
6
8
>>t=0:0.01:2*pi;
>>fx=sin(5*t);
>>fy=cos(5*t);
>>fz=t;
>>plot3(fx,fy,fz);
Attenzione: Dimensioni sempre
concordi!
Laboratorio MATLAB
DII 37
Superfici
−20−10
010
20
−20
0
20−0.5
0
0.5
1
- Plot di funzioni f(x, y) : R2 → R
- surf(X,Y,Z) genera superfici
- mesh(X,Y,Z) genera griglie
superficiali
- Osservazione: f(x, y) deve essere
definita ∀ (x, y) ∈ Dom(f)
Laboratorio MATLAB
DII 38
- Si definiscano due vettori:
x=0:0.2:2*pi;
y=0:0.2:4*pi;
- Una funzione generale z = f(x, y) assume valori su tutte le possibili coppie
(x, y) da cui e evidente che dim(z) = dim(x)× dim(y)
- [X,Y]=meshgrid(x,y); genera le matrici:
X contiene copie per righe di x tante volte quanto e la dimensione di y
Y contiene copie per colonne di y tante volte quanto e la dimensione di x
- A questo punto e possibile definire Z:
Z=f(X,Y); (senza nessun problema di dimensioni:
prodotto cartesiano di X ed Y)
Laboratorio MATLAB
DII 39
-
Esempio :
>>x=-2*pi:pi/15:2*pi;
>>y=-2*pi:pi/15:2*pi;
>>[X Y]=meshgrid(x,y);
>>Z=sin(X).*cos(Y);
>>mesh(X,Y,Z);
>>surf(X,Y,Z);
colormap definisce la
colorazione del surf o del
mesh.
−5
0
5
−5
0
5
−1
0
1
mesh
−5
0
5
−5
0
5
−1
0
1
surf
Laboratorio MATLAB
DII 40
Esercizio 3
1. Definire e plottare la seguente funzione f(x) =
x2 per x ≤ 1,
1/x per x > 1.
2. Calcolare la derivata di f(x) sia numericamente che in forma analitica e
plottarne i valori
3. Utilizzando subplot() plottare nella stessa figura la funzione derivata e la
funzione f(x). Si utilizzino colori e tratti diversi per ogni funzione.
Esercizio 4 Calcolare la funzione f(x, y) : R2 → R definita come il quadrato
della distanza della posizione x, y, dalla circonferenza centrata in un generico Xc
di raggio r. Utilizzando surf e mesh tracciare l’andamento grafico di f(x, y).
Laboratorio MATLAB
DII 43
Esempio 1
n=10; x=[];
for i=1:n
x=[x,iˆ2];
end
Esempio 2
passo=0.1;
t=0.1:passo:100;
f=log(t);
plot(t,f,’-m’);
for i=2:length(t)
dfdt(i-1)=(f(i)-f(i-1))/passo;
end
hold on
plot(t(1:length(t)-1),dfdt,’:b’);
Laboratorio MATLAB
DII 45
Esempio 3
n=0;
a=6;
while n<exp(a)
n=n+1;
end
Esempio 4
n=6;
A=magic(n);
B=zeros(n);
C=[];
k=6;
while k>0
B(6-k+1,:)=A(k,:);
C=[C A(:,k)];
k=k-1;
end
Laboratorio MATLAB
DII 46
if
sintassi:
· · ·if relazione 1
istruzioni 1
elseif relazione 2
istruzioni 2
else
istruzioni 3
end
· · ·
Laboratorio MATLAB
DII 47
Esempio 5
k=input(’Inserisci un numero maggiore di cento :’);
str=ischar(k);
if k>100 & ˜str
disp(’bravo!’);
delta=100-k
elseif k>50 & ˜str
disp(’ci sei quasi!’)
delta=100-k
elseif k>0 & ˜str
disp(’mica tanto vicino!’);
delta=100-k
elseif str
disp(’ho detto NUMEROOOOO’);
else
disp(’allora sei duro!’);
delta=100-k
end
Laboratorio MATLAB
DII 48
case
sintassi:
· · ·switch espressione di switch
case case valore 1
istruzioni
case {case valore 2, case valore 3, case valore 4,...}istruzioni
otherwise
istruzioni
end
· · ·
Laboratorio MATLAB
DII 49
Esempio 6
k=input(’Inserisci un numero da 1 a 3:’);
switch k
case 1
disp(’bravo!’);
delta=100-k
case {2,3}
disp(’esagerato!’)
delta=100-k
otherwise
disp(’Da 1 a 3 !!!’);
delta=100-k
end
Laboratorio MATLAB
DII 50
Esercizio 5
1. Generare una matrice random 100×100 utilizzando il comando rand
2. Estrarne la diagonale principale utilizzando un doppio ciclo for ed assegnarla
ad un vettore v1
3. Estrarne la contro diagonale utilizzando while ed assegnarla ad un
vettore v2
4. Plottare i vettori v1 e v2 sulla stessa figura.
Laboratorio MATLAB
DII 51
Function
Sono script file con dichiarazione di funzione
Prendono parametri in ingresso e restituiscono parametri in uscita:
function [o1,o2,...]=nome_funzione(i1,i2,...);
...
istruzioni
...
Al nome del file viene associato un comando Matlab
Attenzione alla discrepanza tra nome file e nome function!!
Laboratorio MATLAB
DII 52
Esempio 7
function [s,d]=sommadiff(x,y);
s=x+y;
d=x-y;
Se il file viene salvato come sommadiff.m , posso utilizzare
tale funzione nel seguente modo:
>>[a,b]=sommadiff(3,5)
>>a=8
>>b=-2
Attenzione: perche Matlab riconosca il nome di una function come comando, e
necessario che il file sia nella current directory
Laboratorio MATLAB
DII 53
Esercizio 6
Creare una funzione che dato in ingresso un numero x ∈ N, produce il fattoriale x !
Esercizio 7
Scrivere una funzione che prende in ingresso una matrice M quadrata e restituisce
l’inversa di M (naturalmente la funzione Matlab predefinita inv puo essere
utilizzata solo per controllare i risultati). La seguente formula indica come calcolare
ogni elemento della matrice inversa:
M−1(i, j) =(−1)i+j
det(M)det(Mji)
dove Mji e la matrice M decurtata della j-esima riga e della i-esima colonna.
Laboratorio MATLAB
DII 54
Symbolic toolbox
Il Symbolic toolbox fornisce gli strumenti per gestire il calcolo simbolico in
ambiente Matlab
Calcolo :
- derivate
- integrali
- limiti
Algebra Lineare :
- inversa
- determinante
- autovalori
Semplificazioni di espressioni algebriche
Soluzione di equazioni
Grafica
Laboratorio MATLAB
DII 55
funzioni di base
• Dichiarazione di variabili simboliche:
>>syms x y z
crea nel workspace le variabili simboliche x y z
• Passaggio da double a variabile simbolica:
>>sym(nome_variabile)
trasforma un double in una variabile simbolica (istanza di un oggetto simbolico).
>>A=zeros(4);
>>B=sym(A)
B=
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
Laboratorio MATLAB
DII 56
• Passaggio da variabile simbolica a double :
se l’oggetto simbolico e composto solo da numeri
si usa il comando double .
>>C=double(B)
C =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
• Funzioni:
>>syms x y
>>f=1/exp(sin(xˆ2+yˆ2))
f e ora un oggetto simbolico che rappresenta f(x, y) = 1
esin(x2+y2)
Laboratorio MATLAB
DII 57
Calcolo
derivate
Si utilizza il comando:
diff(fun,var_di_der,ord_der) :
Esempio 1
>>syms x a
>>s=sin(a*x);
>>dsdx=diff(s,x,1)
ans =
cos(a*x)*a
>>dsdx=diff(s)
ans =
cos(a*x)*a
Laboratorio MATLAB
DII 58
Esempio 2
>>f=1/exp(sin(xˆ2+yˆ2))
>> diff(f,x,4)
ans =
16/exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)ˆ4*xˆ4+96/
exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)ˆ2*xˆ4*sin(xˆ2+yˆ2)
-48/exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)ˆ3*xˆ2+48/
exp(sin(xˆ2+yˆ2))*sin(xˆ2+yˆ2)ˆ2*xˆ4-
144/exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)*xˆ2*sin(xˆ2+yˆ2)
-64/exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)ˆ2*xˆ4+12/
exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)ˆ2-16/
exp(sin(xˆ2+yˆ2))*sin(xˆ2+yˆ2)*xˆ4+48/
exp(sin(xˆ2+yˆ2))*cos(xˆ2+yˆ2)*xˆ2+12/
exp(sin(xˆ2+yˆ2))*sin(xˆ2+yˆ2)
Laboratorio MATLAB
DII 59
integrali
- Calcolo di I(x) =
∫
f(x) dx:
fint=int(fun,var_int); calcola l’integrale indefinito
Cerca di trovare la funzione fint t.c. diff(fint,x) = fun
- Calcolo di c =
∫ b
a
f(x) dx:
c=int(fun,var_int,a,b); calcola l’integrale definito.
Esempio 1
>>syms x a
>>s=sin(a*x);
>>int(s,x)
ans =
-1/a*cos(a*x)
Esempio 2
>>syms x a
>>s=sin(a*x);
>>int(s,x,0,2*pi/a)
ans =
0
Laboratorio MATLAB
DII 60
limiti
Per calcolare limx→x
+/−
0
f(x) si utilizza:
k=limit(fun,var,val,dir);
calcola il limite della funzione fun per la variabile var che tende al valore
val da destra se dir=’right’ , da sinistra se dir=’left’
Esempio
>>syms x
>> limit(diff(abs(x)),x,0,’left’)
ans =
-1
>> limit(diff(abs(x)),x,0,’right’)
ans =
1
Laboratorio MATLAB
DII 61
Algebra lineare
inversa
Data una matrice simbolica A quadrata, voglio determinare B = A−1:
B=inv(A_symb);
Esempio
>> syms a b c d
>> A=[a b;c d]
A =
[ a, b]
[ c, d]
>> B=inv(A)
B =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]
Laboratorio MATLAB
DII 62
determinante
Data una matrice simbolica A quadrata voglio calcolare il suo determinante:
d=det(A);
Esempio
>>syms a b c d e f g h i
>>A=[a b c;d e f; g h i]
A =
[ a, b, c]
[ d, e, f]
[ g, h, i]
>> det(A)
ans =
i*a*e-a*f*h-i*d*b+d*c*h+g*b*f-g*c*e
Laboratorio MATLAB
DII 63
autovalori
Data una matrice simbolica A quadrata voglio calcolare i suoi autovalori:
eig(A);
Esempio
>> syms a b c d
>> A=[a b;c d];
>> eig(A)
ans = [1/2*a+1/2*d+1/2*(aˆ2-2*a*d+dˆ2+4*b*c)ˆ(1/2)]
[1/2*a+1/2*d-1/2*(aˆ2-2*a*d+dˆ2+4*b*c)ˆ(1/2)]
Laboratorio MATLAB
DII 64
Semplificazione di espressioni algebriche
• f=simple(fun) : ricerca la forma piu semplice di una espressione
simbolica.
• f=simplify(fun) : semplificazione standard.
• f=subs(fun,{var1 var2 ...},{val1 val2 ...})
sostituisce alle variabili var1,var2,... dell’espressione fun i valori
corrispondenti val1,val2,...
Esempio
>> syms a b c d
>> A=[a b 0;c d 0;0 0 3]
A =
[ a, b, 0]
[ c, d, 0]
[ 0, 0, 3]
Laboratorio MATLAB
DII 65
>>v=subs(eig(A),{b,c},{0,0})
v =
[ 3]
[1/2*a+1/2*d+1/2*(aˆ2-2*a*d+dˆ2)ˆ(1/2)]
[1/2*a+1/2*d-1/2*(aˆ2-2*a*d+dˆ2)ˆ(1/2)]
>>simple(v)
ans =
[ 3]
[ a]
[ d]
Laboratorio MATLAB
DII 66
Soluzione di equazioni
z=solve(fun,var)
Determina le radici dell’equazione fun = 0 rispetto alla variabile var .
Esempio 1
>> syms x a b c
>> f=a*xˆ2+b*x+c
f =
a*xˆ2+b*x+c
>> solve(f,x)
ans =
[ 1/2/a*(-b+(bˆ2-4*c*a)ˆ(1/2))]
[ 1/2/a*(-b-(bˆ2-4*c*a)ˆ(1/2))]
Laboratorio MATLAB
DII 67
Esempio 2
>> syms x a
>> f2=log(x)-1/5*xˆ2-a
f2 =
log(x)-1/5*xˆ2-a
>> solve(f2,x)
ans =
1/2*(-2*lambertw(-2/5*exp(2*a)))ˆ(1/2)*5ˆ(1/2)
Laboratorio MATLAB
DII 68
Grafica
ezplot
ezplot : disegna funzioni di una variabile f(x) : R→ R
ezplot(fun,[min_val max_val])
disegna la funzione fun nel dominio [min_val max_val]
Esempio
>> syms x
>> f=5*sin(x)ˆ2+xˆ2;
>> ezplot(f,[-pi pi])
Laboratorio MATLAB
DII 69
ezplot3
ezplot3(var_x,var_y,var_z,[t_min t_max]) :
traccia traiettorie f(t) : R→ R3
Esempio 1
>> syms t
>> ezplot3(sin(t),t,cos(t),[-5*pi 5*pi])
Esempio 2
>> syms t
>> ezplot3(t,sin(t),cos(t)ˆ2,[-3*pi 3*pi])
Laboratorio MATLAB
DII 70
ezmesh, ezsurf
ezmesh(fun,[x_min x_max y_min y_max]) traccia griglie
superficiali per funzioni f(x, y) : R2 → R sul dominio
[x_min x_max y_min y_max]
ezsurf(fun,[x_min x_max y_min y_max]) : traccia superfici
per funzioni f(x, y) : R2 → R sul dominio
[x_min x_max y_min y_max]
Esempio
>>syms x y
>>ezmesh(sin(x+y))
>>ezsurf(sin(x+y),[-2*pi 2*pi -2*pi 2*pi])
Laboratorio MATLAB
DII 71
Esercizio 8
1. definire la funzione f(x, y, z) = e sin(x+y) + z2 come oggetto simbolico
2. Calcolare il gradiente∇f(x, y, z) ed la matrice Hessiana H(f(x, y, z))
3. plottare f(x, y) = f(x, y, z)|z=3
4. plottare f(y, z) = f(x, y, z)|x=2y
5. plottare f(x, y) = f(x, y, z)∣
∣
x=y2; z=√
x
Laboratorio MATLAB
DII 72
Control system toolbox
funzioni principali
tf sintassi: sys=tf(num,den);
sys : oggetto Transfer Function
num: vettore contenente i coefficienti del polinomio al numeratore in ordine
decrescente rispetto alle potenze di s
den : vettore contente i coefficienti del polinomio al denominatore in ordine
decrescente rispetto alle potenze di s
G(s) =2s− 2
s2 + 4s + 3
>>G=tf([2 -2],[1 4 3]);
G.num{1} , G.den{1} restituiscono [0 2 -2] , [1 4 3] .
Laboratorio MATLAB
DII 73
zpk sintassi: sys=zpk(z,p,k)
sys : oggetto Transfer Function
z : vettore contente gli zeri z1, z2, . . ., znz della funzione di trasferimento
p: vettore contenente i poli p1, p2, . . ., pnp della funzione di trasferimento
k : guadagno della funzione di trasferimento
G(s) = k(s− z1) · · · (s− znz )
(s− p1) · · · (s− pnp)
>>G=zpk(1,[-3 -1],2);
G.z{1} , G.p{1} , G.k{1} restituiscono gli zeri, i poli, il guadagno.
Laboratorio MATLAB
DII 74
ss sintassi: sys=ss(A,B,C,D)
Crea un modello continuo in spazio di stato sys con matrici A,B,C,D
pole sintassi: p=pole(sys)
sys : oggetto Transfer Function
p: vettore contenente i poli della funzione di trasferimento
>> p=pole(G)
p =
-3
-1
Laboratorio MATLAB
DII 75
zerosintassi: z=zero(sys)
sintassi: [z,k]=zero(sys)
sys : oggetto Transfer Function
z : vettore contenente gli zeri della funzione di trasferimento
k : guadagno del sistema
>> [z,k]=zero(G)
z =
1
k =
2
Laboratorio MATLAB
DII 76
dcgain sintassi: dc=dcgain(sys)
sys : oggetto Transfer Function
dc : guadagno in continua (dc = G(0))
>> dc=dcgain(G)
dc =
- 0.6667
Laboratorio MATLAB
DII 77
impulsesintassi: impulse(sys)
sintassi: impulse(sys,t)
sys : oggetto Transfer Function
t : vettore che specifica l’orizzonte temporale
impulse visualizza l’andamento temporale della risposta impulsiva
g(t) G(s)
u(t) = δ(t) U(s) = 1
y(t) = L−1(G(s)) Y (s) = G(s)U(s)
>> impulse(G,0:0.05:10)
N.B. La risposta impulsiva e l’antitrasformata della funzione di trasferimento
Laboratorio MATLAB
DII 78
stepsintassi: step(sys)
sintassi: step(sys,t)
sys : oggetto Transfer Function
t : vettore che specifica l’orizzonte temporale
step visualizza l’andamento temporale della risposta al gradino
g(t) G(s)
u(t) =
0 se t < 0
1 se t ≥ 0U(s) =
1
s
y(t) = L−1(
G(s)s
)
Y (s) = G(s)U(s)
>>step(G,0:0.05:10)
Laboratorio MATLAB
DII 79
c2dsintassi: sys_d=c2d(sys_c,Ts)
Converte un sistema tempo-continuo sys_c in uno tempo-discreto sys_d
con tempo di campionamento Ts
d2csintassi: sys_c=d2c(sys_d)
Converte un sistema tempo-discreto sys_d in uno tempo-continuo sys_c
ctrbsintassi: C=ctrb(A,B)
Calcola la matrice di raggiungibilita C = [B AB A2B ... An−1B]
obsvsintassi: O=obsv(C,A)
Calcola la matrice di osservabilita O = [C; CA; CA2; ... ; CAn−1]
Laboratorio MATLAB
DII 80
bodesintassi: bode(G)
Genera il diagramma di Bode del modulo e della fase della funzione G
>> bode(G)
nyquistsintassi: nyquist(G)
Genera il diagramma di Nyquist della funzione G
>> nyquist(G)
ltiviewsintassi: ltiview(G)
GUI (Graphical User Interface) interattiva per analizzare le risposte
nel tempo ed in frequenza del sistema LTI (lineare tempo invariante) G
Laboratorio MATLAB
DII 81
Altri toolbox di Matlab
- Optimization toolbox : funzioni per l’ottimizzazione (help optim )
- Statistics Toolbox : funzioni per la statistica (help stats )
- System Identification Toolbox : funzioni per l’identificazione dei sistemi
dinamici (help ident )
- Signal Processing Toolbox : funzioni per l’elaborazione dei segnali
(help signal )
- Communications Toolbox : funzioni per le telecomunicazioni (help comm )
- Image Processing Toolbox : funzioni per l’elaborazione delle immagini
(help images )
- Virtual Reality Toolbox : funzioni per l’implementazione della realta virtuale
(help vr )
Laboratorio MATLAB
DII 82
- Neural Network Toolbox : funzioni per la gestione delle reti neurali
(help nnet )
- Partial Differential Equation Toolbox : funzioni per la risoluzione di equazioni
alle derivate parziali (help pde )
- Database Toolbox : funzioni per la gestione dei database
(help database )
- Molti altri toolbox .... vedi:
http://www.mathworks.com/products/product_listing
per una lista completa
Laboratorio MATLAB
DII 83
Simulink
Simulink e un pacchetto software di Matlab che permette di simulare ed analizzare
sistemi i cui ingressi e le uscite variano nel tempo.
Simulink si basa su una procedura in due passi:
• Creazione di un modello grafico del sistema tramite utilizzo dell’editor di modelli
Simulink. In questa fase l’utente specifica le relazioni matematiche che
intercorrono tra gli ingressi e le uscite del sistema.
• Simulazione delle proprieta del sistema in un intervallo temporale fissato
dall’utente.
Laboratorio MATLAB
DII 84
Operazioni di base
- Creazione di un nuovo modello
- Aggiunta dei blocchi necessari (drag & drop)
- Collegamento dei blocchi (drag & drop)
- Settaggio del tempo di simulazione
- Salvataggio del modello
- Lancio della simulazione
Laboratorio MATLAB
DII 85
blocchi standard
• Sources
• Sinks
• Continuous
• Discrete
• Math Operations
• Signal Routing
• User-Defined Functions
− Subsystems
Laboratorio MATLAB
DII 86
Sources
- Constant : genera un segnale costante con valore regolabile.
- Ramp : genera il segnale rampa con pendenza regolabile.
- Random Number : genera un segnale random con distribuzione guassiana,
con media e varianza regolabili.
- Sine : genera il segnale A sin(ω t + φ) + c.
- Step : genera il segnale gradino con valore iniziale, finale ed istante di
attivazione regolabili.
- Clock : genera in uscita il tempo di simulazione.
- From Workspace : genera in uscita un segnale a partire da una variabile definita
nel workspace: var_in=[sig_time signal] , dove sig_time e
signal sono due vettori colonna.
Laboratorio MATLAB
DII 87
Esempio
>>t=1:0.01:10;
>>var_in=[t’ sin(t)’];
Sinks
- Scope : visualizza l’andamento temporale del segnale in ingresso.
- To File : dato un segnale in ingresso genera un file ’.mat’ costituito da due
vettori: il vettore dei tempi di simulazione ed il segnale.
- To Workspace : dato un segnale in ingresso genera in uscita una variabile di
tipo struttura od array contenente il segnale ed eventualmente il tempo di
simulazione.
- XY Graph : genera la traiettoria di un punto in R2.
Laboratorio MATLAB
DII 88
Continuous
- Derivative : calcola la derivata del segnale di ingresso.
- Integrator : calcola l’integrale del segnale di ingresso.
- Transfer Fcn : simula il sistema specificato tramite la funzione di trasferimento
N(s)/D(s).
- Zero-Pole : simula il sistema specificato tramite una funzione di trasferimento
definita a partire da zeri e poli.
- State-Space : simula il sistema specificato tramite la sua rappresentazione
di stato.
- Transport Delay : applica un ritardo specificato al segnale di ingresso.
Laboratorio MATLAB
DII 89
Discrete
- Unit delay : ritarda il segnale tempo-discreto in ingresso di un istante di
campionamento.
- Discrete Integrator : genera l’integrale tempo-discreto del segnale di ingresso.
- Discrete Fcn : simula il sistema tempo-discreto specificato tramite una funzione
di trasferimentoN(z)D(z) .
- Discrete Z-P : simula il sistema tempo-discreto specificato tramite una funzione
di trasferimento definita a partire da zeri e poli.
- Discrete S-S : simula il sistema tempo-discreto specificato tramite la sua
rappresentazione di stato.
Laboratorio MATLAB
DII 90
Math Operation
- Abs : genera in uscita il valore assoluto del segnale in ingresso.
- Gain : genera in uscita il segnale di ingresso moltiplicato per un parametro
(guadagno) k regolabile.
- Sum : genera come segnale di uscita la somma dei segnali ingressi, con
numero di ingressi e segni regolabile.
- Trigonometric : genera come segnale di uscita la funzione trigonometrica del
segnale di ingresso specificata.
- Math Function : genera in uscita una delle funzioni elementari predefinite in
Matlab, calcolata sul segnale di ingresso.
- Matrix Concaten. : genera in uscita la concatenazione di piu segnali in ingresso.
- Matrix Gain : genera in uscita il segnale in ingresso moltiplicato per una data
matrice.
Laboratorio MATLAB
DII 91
Signal Routing
- Mux : genera in uscita un segnale multiplo (bus), costituito dall’unione di piu
segnali di ingresso.
- Demux : genera piu segnali in uscita a partire da un segnale multiplo (bus) in
ingresso.
User-Defined Functions
- Fcn : genera in uscita una qualsiasi funzione del segnale di ingresso (u) definita
dall’utente.
- Matlab Fcn : genera in uscita una qualsiasi funzione Matlab predefinita del
segnale di ingresso (u).
Laboratorio MATLAB
DII 92
Discontinuities
- Saturation : limita il segnale di ingresso in un intervallo fissato dall’utente.
Subsystems
- Subsystem : permette all’utente di costruire sotto blocchi simulink
(utile con schemi simulink complessi).
Laboratorio MATLAB
DII 93
Esercizio 9 - Simulink
1. Creare uno schema a blocchi che:
• genera una rampa di pendenza 5, con display
• alla rampa sommare uno scalare k variabile nel workspace e farne il display
congiuntamente con il precedente
2. Generare uno schema a blocchi che:
• genera il segnale y(t) = sin(2t) su un orizzonte t ∈ [0, 4π]
• genera il segnale z1(t) = ddt
y(t)
• genera il segnale z2(t) = y(t + π2 )
• genera il segnale z3(t) =
∫
y(t)dt
Laboratorio MATLAB
DII 94
Esercizio 10 - Simulink
Si consideri un’asticella rotante alla cui estremita e posta una massa m = 2 Kg.
La lunghezza ℓ dell’asticella e soggetta alla seguente dinamica:
ℓ = − k
mℓ +
k
mℓ0.
con ℓ0 = 2 m e k = 3 N/m.
Le condizioni iniziali sono ℓ(0) = 0 e ℓ(0) = 1 m.
L’asticella ruota con frequenza ω = 2.5 rad/sec.
E richiesto di:
• costruire un modello simulink di tale sistema in cui venga fatto il display
dell’andamento temporale della lunghezza dell’asticella e della posizione x ed y
della massa.
• Dare una rappresentazione grafica della traiettoria della massa in R2.
Laboratorio MATLAB
DII 95
Esercizio 11 - Simulink
k
m
x0
f
• Si consideri il sistema massa-molla riportato in figura. Supponendo che sia
applicato in ingresso al sistema un gradino unitario, si simuli il sistema dinamico
visualizzando l’andamento temporale della posizione x della massa.
Si supponga che la massa m = 1.5 Kg, la costante elastica della molla
k = 103 N/m e x(0) = x(0) = 0. (Suggerimento: mx + kx = f ).
Laboratorio MATLAB
DII 96
k
m
x0
f
β
• Si consideri il sistema massa-molla-smorzatore riportato in figura. Supponendo
che la costante di smorzamento della molla β = 0.8 Nms, si simuli il sistema
dinamico visualizzando l’andamento temporale della posizione x della massa.
Fissare gli altri parametri come nel punto precedente.
(Suggerimento: mx + βx + kx = f ).
Laboratorio MATLAB
top related