Sei sulla pagina 1di 90

Laboratorio Matlab

di Segnali e Sistemi
Mattia Zorzi
con la collaborazione di
Francesco Guidolin e Chiara Masiero
17 maggio 2013
2
Indice
1 Introduzione 5
2 Funzionalit`a basilari di Matlab 7
2.1 Come si presenta Matlab . . . . . . . . . . . . . . . . . . . . . 7
2.2 Command Window . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Denizione di oggetti . . . . . . . . . . . . . . . . . . . 9
2.2.2 Operazioni di base sui vettori . . . . . . . . . . . . . . 12
2.2.3 Funzioni Matlab . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Altre istruzioni matlab . . . . . . . . . . . . . . . . . . 18
2.3 Gestione delle variabili . . . . . . . . . . . . . . . . . . . . . . 18
2.4 m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Strutture di controllo . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Graci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3 Segnali e convoluzioni 29
3.1 Segnali pari e dispari, segnali complessi . . . . . . . . . . . . . 29
3.2 Area ed energia di un segnale . . . . . . . . . . . . . . . . . . 30
3.3 Convoluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 Analisi di Fourier 47
4.1 Serie di Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Trasformata di Fourier per segnali a tempo continuo . . . . . . 52
4.3 Trasformata di Fourier per segnali a tempo discreto . . . . . . 57
4.4 Campionamento e aliasing . . . . . . . . . . . . . . . . . . . . 61
3
4 INDICE
5 Sistemi LTI discreti 65
5.1 Introduzione ai sistemi LTI discreti . . . . . . . . . . . . . . . 65
5.2 Risposta impulsiva . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 Risposta in frequenza . . . . . . . . . . . . . . . . . . . . . . . 73
5.4 Autofunzioni dei ltri . . . . . . . . . . . . . . . . . . . . . . . 75
6 Sistemi LTI continui 79
6.1 Equazioni dierenziali in Matlab . . . . . . . . . . . . . . . . . 80
6.2 Studio di sistemi meccanici tramite modelli LTI continui . . . 81
6.3 Accenni alluso di Simulink . . . . . . . . . . . . . . . . . . . . 87
Capitolo 1
Introduzione
Questa dispensa contiene il materiale fornito agli studenti per il laboratorio
del corso di Segnali e Sistemi per ingegneria dellInformazione svolto alluni-
versit` a di Padova nella.a. 2011/2012. Lobiettivo principale del laboratorio
`e fornire una certa familiarit` a con lo strumento di calcolo Matlab, il quale
`e ampiamente usato in contesti ingegneristici e applicativi. Lobbiettivo se-
condario, ma non per questo meno importante, `e permettere agli studenti di
assimilare meglio i concetti fondamentali riguardanti la teoria dei segnali e
dei sistemi visti a lezione.
Il termine Matlab deriva dallabbreviazione di MATrix LABoratory. Fu
creato alla ne degli anni 70 da Cleve Moler, il presidente del dipartimento di
scienze informatiche dellUniversit`a del Nuovo Messico. Egli cre` o Matlab per
dare ai suoi studenti accesso alle librerie linpack e ad eispack senza che essi
dovessero conoscere il Fortran. Presto si diuse nelle altre Universit`a e trov` o
un grande pubblico tra la comunit` a dei matematici applicati. Jack Little, un
ingegnere, conobbe il programma durante una visita a Moler allUniversit` a
di Stanford nel 1983. Riconoscendo il suo potenziale commerciale, si un`
con Moler e Steve Bangert. Essi riscrissero Matlab in C e fondarono la The
MathWorks nel 1984 per continuare il suo sviluppo.
Matlab perci` o `e un ambiente per il calcolo numerico e lanalisi statistica
che comprende anche lomonimo linguaggio di programmazione creato dal-
la MathWorks. Questo software funziona su diversi sistemi operativi, tra
cui Windows, Mac OS, GNU/Linux e Unix. Attualmente in commercio `e
disponibile la versione R2012a.
Inne `e doveroso citare, in alternativa a Matlab, il software gratuito Oc-
5
6 CAPITOLO 1. INTRODUZIONE
tave. Il suo vantaggio `e che `e compatibile quasi completamente con Matlab.
Capitolo 2
Funzionalit` a basilari di Matlab
2.1 Come si presenta Matlab
Quando il programma viene richiamato appare la schermata di Figura 2.1:
Figura 2.1: Schermata di Matlab
7
8 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
Command Window `e la sotto-nestra in cui vengono trasmesse le istru-
zioni desiderate a Matlab
WorkSpace visualizza le variabili attualmente create dalle istruzioni
fornite.
La cartella di lavoro `e la sotto-nestra che visualizza tutti i le contenuti
nella cartella in cui ha accesso Matlab.
In Figura 2.2 `e mostrata la barra dei pulsanti di Matlab. Il primo tasto
serve per creare un le Matlab che chiameremo m-le. Il secondo tasto apre
la cartella di lavoro. Il quartultimo apre il sottoprogramma Simulink che
vedremo in seguito. Lultimo tasto permettere di accedere alla guida in linea
di Matlab. Aanco `e possibile selezionare la cartella di lavoro desiderata.
Figura 2.2: Barra dei pulsanti di Matlab
2.2 Command Window
In questa nestra appare un simbolo di attesta seguito da un cursore
>>_
Per fornire una istruzione a Matlab `e suciente scrivere listruzione e premere
invio. Se scriviamo unistruzione inesistente, Matlab segnala, attraverso una
frase in rosso, che il comando non esiste.
>> fhsj
??? Undefined function or variable fhsj .
>>
Quando Matlab deve segnalare un errore utilizza sempre il colore rosso, per
gli altri messaggi utilizza il nero. I comandi pi` u semplici e intuitivi riguardano
le operazioni di somma, sottrazione, moltiplicazione, divisione ed elevamento
a potenza di numeri reali
2.2. COMMAND WINDOW 9
>> 6.2+2 -3.02^2*3/2
ans =
-5.4806
>>
La variabile ans contiene il risultato delloperazione. Per non visualizzare
lecho di unistruzione `e suciente scrivere punto e virgola dopo listruzione
>> 6.2+2 -3.02^2*3/2;
>>
2.2.1 Denizione di oggetti
Denizione di una variabile reale
a=3;
Denizione di un numero complesso
>> z=7+i*9
z =
7.0000 + 9.0000i
>>
Va osservato che i `e una variable predenita come

1 e in quanto
tale pu`o essere sovrascritta.

E buona norma perci` o non sovrascrivere
i. Nota bene: anche j `e considerata ununit` a immaginaria.
Denizione della variabile stringa s che contiene la parola ciao
>> s=ciao
s =
10 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
ciao
>>
Denizione del vettore riga
v =
_
1 2 3
_
(2.1)
>> v=[1 2 3]
v =
1 2 3
>>
Denizione del vettore colonna
v =
_
_
1
2
3
_
_
(2.2)
>> v=[1; 2; 3]
v =
1
2
3
>>
Il punto e virgola serve per indicare la ne di una riga.
Denizione della matrice
A =
_
1 2 3
4 5 6
_
(2.3)
2.2. COMMAND WINDOW 11
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>>
Generazione del vettore
v =
_
5 6 7 8 9 10
_
(2.4)
i cui elementi sono equispaziati di 1 in maniera crescente
>> v=5:10
v =
5 6 7 8 9 10
>>
Generazione del vettore
v =
_
0 0.1 0.2 0.3 0.4 0.5 0.6
_
(2.5)
i cui elementi sono equispaziati di 0.1 in maniera crescente
>> v=0:0.1:0.6
v =
Columns 1 through 4
0 0.1000 0.2000 0.3000
Columns 5 through 7
12 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
0.4000 0.5000 0.6000
>>
2.2.2 Operazioni di base sui vettori
Somma tra due vettori
u =
_
1
2
_
, v =
_
3
4
_
(2.6)
>> u=[1; 2];
>> v=[3; 4];
>> w=u+v
w =
4
6
>>
Calcolo del prodotto interno < u, v >= u
T
v
>> u*v
ans =
11
>>
Prodotto tra i vettori u e v componente per componente
>> v.*u
ans =
2.2. COMMAND WINDOW 13
3
8
>>
Esiste anche lanalogo per la divisione (./) e lelevamento a potenza (.).
Trasposizione del vettore u (solo nel caso in cui u `e denito nel campo
reale)
>> u
ans =
1 2
>>
Selezione dellelemento j-esimo del vettore
v =
_
3 4 5 6
_
T
(2.7)
>> v=[3; 4; 5; 6];
>> j=2;
>> v(j)
ans =
4
>>
Selezione di una sottosequenza del vettore
v =
_
1.1 2.2 3.3 4.4 5.5 6.6
_
(2.8)
secondo gli indici di posizione j, k
14 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
>> v=[1.1 2.2 3.3 4.4 5.5 6.6];
>> j=2;
>> k=5;
>> v(j:k)
ans =
2.2000 3.3000 4.4000 5.5000
>>
Polinomi: in matlab un polinomio `e rappresentato da un vettore (ri-
ga o colonna). Per creare un polinomio `e suciente immettere suoi
coecienti in un vettore, che chiameremo p, in ordine decrescente. Per
esempio, consideriamo
x
5
+ 10x
4
+ 0.6x
3
+ 12x
2
7x + 5 (2.9)
>> p=[1 10 0.6 12 -7 5]
p =
Columns 1 through 4
1.0000 10.0000 0.6000 12.0000
Columns 5 through 6
-7.0000 5.0000
>>
2.2.3 Funzioni Matlab
Matlab fornisce molte funzioni allutente. Largomento delle funzioni, se
presente, `e compreso tra parentesi tonde.
2.2. COMMAND WINDOW 15
Esempio 1. Vogliamo valutare la seguente funzione polinomiale per x = 2
p(x) = x
5
7x + 5. (2.10)
In questo caso basta utilizzare la funzione polyval con argomenti di ingresso
il corrispondente polinomio e il valore 2. Tale funzione restituisce p(2).
>> p=[1 0 0 0 -7 5];
>> valore=polyval(p,2)
valore =
23
>>
Inoltre non `e necessario salvare il valore che restituisce la funzione
>> p=[1 0 0 0 -7 5];
>> polyval(p,2)
ans =
23
>>
Per avere informazioni su una funzione Matlab `e suciente scrivere help
seguito dal nome della funzione
>> help polyval
POLYVAL Evaluate polynomial.
Y = POLYVAL(P,X) returns the value of a
polynomial P evaluated at X. P is a vector of
length N+1 whose elements are the coefficients
of the polynomial in descending powers.
Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X
+ P(N+1)
If X is a matrix or vector , the polynomial is
16 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
evaluated at all points in X. See POLYVALM for
evaluation in a matrix sense.
[Y,DELTA] = POLYVAL(P,X,S) uses the optional
output structure S created by POLYFIT to generate
prediction error estimates DELTA. DELTA is an
estimate of the standard deviation of the error
in predicting a future observation at X by P(X).
If the coefficients in P are least squares
estimates computed by POLYFIT , and the errors in
the data input to POLYFIT are independent ,
normal , with constant variance , then Y +/- DELTA
will contain at least 50\% of future observations
at X.
Y = POLYVAL(P,X,[],MU) or [Y,DELTA] =
POLYVAL(P,X,S,MU) uses XHAT = (X-MU (1))/ MU(2) in
place of X. The centering and scaling parameters
MU are optional output computed by POLYFIT.
Class support for inputs P,X,S,MU:
float: double , single
See also polyfit , polyvalm.
Overloaded methods:
gf/polyval
Reference page in Help browser
doc polyval
>>
Esempio 2. Vogliamo calcolare le radici del polinomio
x
5
7x + 5. (2.11)
2.2. COMMAND WINDOW 17
La funzione Matlab che dobbiamo utilizzare `e roots. Il parametro dingresso
`e il polinomio e il parametro di uscita `e un vettore contente le radici del
polinomio.
>> p=[1 0 0 0 -7 5];
>> roots(p)
ans =
-1.7704
-0.1618 + 1.6671i
-0.1618 - 1.6671i
1.3464
0.7477
>>
Riportiamo alcune funzioni Matlab di interesse.
Funzioni costanti
Funzione Descrizione
pi
exp(1) numero di Nepero
eps Precisione di Matlab
Funzioni per numeri reali
Funzione Descrizione
round(x) Restituisce lapprossimazione intera del numero reale x
rem(x,y) Restituisce il resto della divisione x y
sign(x) Restituisce il segno di x
sqrt(x) Restituisce la radice quadrata di x
sin(x) Restituisce il seno di x
cos(x) Restituisce il coseno di x
tan(x) Restituisce la tangente di x
asin(x) Restituisce larcoseno di x
acos(x) Restituisce larcocoseno di x
atan(x) Restituisce larcotangente di x
log(x) Restituisce il logaritmo di x
log10(x) Restituisce il logaritmo in base dieci di x
18 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
Funzioni per numeri complessi
Funzione Descrizione
real(z) Restituisce la parte reale del numero complesso z
imag(z) Restituisce la parte immaginaria del numero complesso z
abs(z) Restituisce il modulo del numero complesso z
phase(z) Restituisce la fase di z
conj(z) Restituisce il complesso coniugato di z
exp(z) Restituisce e
z
Funzioni per vettori e matrici
Funzione Descrizione
length(v) Restituisce la lunghezza del vettore v
norm(v) Restituisce la norma euclidea di v
sum(v) Restituisce la somma degli elementi di v
wrev(v) Restituisce il vettore che ha gli elementi di v invertiti di ordine
min(v) Restituisce il valore e la posizione dellelemento pi` u piccolo di v
max(v) Restituisce il valore e la posizione dellelemento pi` u grande di v
zeros(m,1) Genera un vettore di zeri di dimensione m
ones(m,1) Genera un vettore di uno di dimensione m
polyval(p,k) Restituisce il valore p(k) dove p(x) `e un polinomio
roots(p) Restituisce le radici del polinomio p(x)
conv(p,q) Restituisce il polinomio risultante dal prodotto dei polinomi p(x), q(x)
2.2.4 Altre istruzioni matlab
Istruzione Descrizione
disp(s) Visualizza loggetto s nel Command Window
clc Pulisce la nestra Command Window
num2str(x) Restituisce la variabile stringa che corrisponde alla variabile reale/complessa x
pause Arresta linserimento di istruzioni nel Command Window, leetto termina premendo INVIO
% Simbolo per i commenti
2.3 Gestione delle variabili
Ogni variabile denita nel Command Window viene memorizzata nel Work-
Space. Listruzione whos permette la visualizzazione delle variabili del Work-
Space
>> whos
2.3. GESTIONE DELLE VARIABILI 19
Name Size Bytes Class Attributes
A 2x4 64 double
ans 1x1 8 double
v 1x7 56 double
>>
Listruzione clear permette la cancellazione di una o tutte le variabili del
WorkSpace
>> whos
Name Size Bytes Class Attributes
A 2x4 64 double
ans 1x1 8 double
v 1x7 56 double
>> clear A
>> whos
Name Size Bytes Class Attributes
ans 1x1 8 double
v 1x7 56 double
>> clear all
>> whos
>>
Chiudendo Matlab tutte le variabili del WorkSpace vengono perse. Per sal-
vare tutte le variabili del WorkSpace si ricorre allistruzione save seguita dal
nome del le su cui verranno salvate
>> save risultati
>>
dopo questa istruzione Matlab crea il le risultati.mat nella cartella di la-
voro. In questa maniera possiamo uscire dallambiente Matlab senza perdere
i nostri dati. Per ricaricare tutte le variabili salvate nel le .mat si utilizza il
comando load
>> load risultati
20 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
>>
2.4 m-les
Finora abbiamo visto come sia possibile utilizzare Matlab tramite la riga di
comando. Pu` o succedere per` o che si vogliano scrivere veri e propri program-
mi, cio`e una successione di comandi da eseguire uno dopo laltro in un ordine
ssato. In tal caso la successione di comandi deve essere memorizzata in un
le chiamato m-le. Per creare un m-le `e suciente selezionare il primo ta-
sto della barra dei pulsanti di Matlab, Figura 2.2. Si aprir` a un editor, Figura
2.3, dove `e possibile scrivere la sequenza di istruzioni. Terminata questa fase
Figura 2.3: Editor per gli m-le.
dobbiamo salvare il lavoro. Supponiamo di chiamarlo prova, allora Matlab
creer` a un le prova.m nella cartella di lavoro. Inne per eseguire la squenza
di istruzioni salvate in prova.m `e suciente scrivere il nome del le, senza
estensione, nel Command Window
>>prova
>>
Esempio 3. Vogliamo scrivere il programma es3.m che calcola la media e
la deviazione standard del vettore
x =
_
1 2 3 4
_
T
. (2.12)
2.4. M-FILES 21
1 %%%%%%%%%%%
2 % es3.m %
3 %%%%%%%%%%%
4
5 clear all % cancello il vecchio WorkSpace
6 clc% pulisci lo schermo
7 x=[1 2 3 4];
8 media=sum(x)/ length(x);
9 diff=x-media; % vettore differenza
10 dev_std=sqrt(sum(diff .^2)/ length(x));
11 disp([Media num2str(media )]) %stampo risultati
12 disp([Deviazione standard num2str(dev_std )])
Eseguendo es3.m otteniamo
Media 2.5 Deviazione standard 1.118
>>
Esempio 4. Vogliamo creare il programma es4.m che salva i due vettori
u =
_
4 7 9
_
T
, v =
_
0 1 3
_
T
(2.13)
nel le dati.mat
1 %%%%%%%%%%%
2 % es4.m %
3 %%%%%%%%%%%
4
5 clear all
6 u=[4 7 9]; %genero i vettori u,v
7 v=[0; 1; 3];
8 save dati % salvo le variabili del WorkSpace
Esempio 5. Utilizzando i vettori dellesercizio precedente, calcolare u
T
v
1 %%%%%%%%%%%
2 % es5.m %
3 %%%%%%%%%%%
4
5 clear all %cancello tutte le variabili WorkSpace
6 load dati %carico il vecchio WorkSpace
7 u*v
22 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
2.5 Strutture di controllo
Oltre agli operatori aritmetici esistono gli operatori relazionali <, >, ==, <=,
>=, ~= che corrispondono ai simboli matematici <,>,=,,,=. Mediante
questi operatori si possono scrivere delle relazioni che possono essere vere o
false. Il valore vero viene indicato da Matlab con 1, mentre il valore falso
viene indicato con 0.
Struttura if
1 if [condizione]
2 [istruzioni]
3 else
4 [istruzioni]
5 end
Struttura for
1 for j=min:max
2 [istruzioni]
3 end
Struttura while
1 while [condizione]
2 [istruzioni]
3 end
Esempio 6. Scrivere un programma che somma due polinomi p(x), q(x). Te-
nere conto del fatto che i due polinomi possono avere grado diverso (e di con-
seguenza i corrispondenti vettori possono avere lunghezze diverse). Testare
il programma con i seguenti polinomi
p(x) = x
3
+ 1
q(x) = x
2
+ 7x 3. (2.14)
1 %%%%%%%%%%%
2 % es6.m %
3 %%%%%%%%%%%
2.5. STRUTTURE DI CONTROLLO 23
4
5 clear all
6 clc %pulisci lo schermo
7 p=[1 0 0 1]; %polinomi da sommare
8 q=[2 7 -3];
9 if length(p)<length(q)
10 corto=p;
11 lungo=q;
12 else
13 corto=q;
14 lungo=p;
15 end
16 diff=length(lungo)-length(corto );
17 if diff >0
18 somma =[ zeros(1,diff) corto ]+ lungo; %aggiungi zeri al polinomio
19 %piu corto
20 else
21 somma=corto+lungo;
22 end
23 disp(Polinomio somma )
24 somma
Esempio 7. Scrivere un programma che stampa i primi dieci numeri interi
che sono il quadrato di un numero intero. Fare in modo che ogni numero
venga stampato dopo che lutente ha digitato INVIO.
1 %%%%%%%%%%%
2 % es7.m %
3 %%%%%%%%%%%
4
5 clear all
6 clc %pulisci finestra Command Window
7 for n=1:10
8 disp(n^2)
9 pause
10 end
Esempio 8. Scrivere lo stesso programma dellEsempio 7 utilizzando il con-
trollo while.
24 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
1 %%%%%%%%%%%
2 % es8.m %
3 %%%%%%%%%%%
4
5 clear all
6 clc %pulisci finestra Command Window
7 n=1;
8 while n<=10
9 disp(n^2)
10 n=n+1;
11 pause
12 end
2.6 Graci
Matlab fornisce anche funzioni grache. Consideriamo un segnale denito su
un dominio D R
y = f(t), t D. (2.15)
Per disegnare tale segnale su carta:
prendiamo un numero nito di punti t
1
, . . . t
n
contenuti in D, equispa-
ziati secondo una prescelta quantit` a T
calcoliamo i corrispondenti y
1
, . . . y
n
con y
i
= f(t
i
)
disegniamo i punti sul piano cartesiano e inne li uniamo secondo un
opportuno criterio.
Detto in maniera pi` u formale: campioniamo il segnale con passo di campio-
namento pari a T e poi lo interpoliamo linearmente. Il concetto `e lo stesso
per stampare in Matlab tale segnale. Consideriamo il vettore
t =
_
t
1
. . . t
n
_
T
, t
i
D, (2.16)
calcoliamo
y =
_
f(t
1
) . . . f(t
n
)
_
T
. (2.17)
Inne utilizziamo la funzione plot passandole i vettori t e y.
2.6. GRAFICI 25
Esempio 9. Stampare il segnale
f(t) = sin(
2
5
t 0.1), t [0, 10] (2.18)
con passo di campionamento pari a T = 0.02.
1 %%%%%%%%%%%
2 % es9.m %
3 %%%%%%%%%%%
4
5 clear all
6 T=0.02; %passo di campionamento
7 t=0:T:10; % crea il vettore t
8 for j=1: length(t) % crea il vettore y
9 y(j)=sin (2*pi/5*t(j) -0.1);
10 end
11 plot(t,y)
12 xlabel(t) % nome asse x
13 ylabel(f(t)) % nome asse y
14 axis ([0 10, -1 1 ]) % assi del grafico
15 grid on % griglia grafico
Eseguendo il programma otteniamo il graco di Figura 2.4. Matlab oltre alla
gura fornisce una serie utility grache: salva gura, zoom graco, esplora
graco, datatip. Osserviamo che in questo m-le ci sono delle nuove funzioni
di Matlab. Nella seguente tabella ne riportiamo la descrizione.
Funzione Descrizione
figure Apre una nuova nestra per stampare graci
close all Chiude tutte le nestre dei graci aperte
grid on Mostra la griglia nel graco
grid off Non mostra la griglia nel graco (default)
xlabel(s) Chiama lasse x con la variabile stringa s
ylabel(s) Chiama lasse y con la variabile stringa s
legend() Istruzione per la legenda del graco
title(s) Intitola il graco usando la variabile stringa s
axis([x1 x2,y1 y3]) Imposta gli assi del graco secondo (x
1
, x
2
) e (y
1
, y
2
)
hold on Permette di sovrapporre pi` u graci nella stessa nestra
hold off Permette di stampare solo un graco nella nestra (default)
stem Istruzione per stampare segnali a tempo discreto
26 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
Figura 2.4: Graco dellEsempio 9
Esercizio 1. Consideriamo il segnale dellEsempio 9. Ripetere lesempio con
T = 0.8 e T = 2. Commentare i graci trovati.
Esercizio 2. Stampare il segnale
f(t) = e
0.01t
sin(0.4t), t [0, 100]. (2.19)
Scegliere in maniera opportuna il passo di campionamento.
Esempio 10. Stampare su due gure dierenti i segnali
f(t) = cos(2t), t [0, 50]
g(t) = e
0.1t
cos(2t) (2.20)
con passo di campionamento pari a T = 0.02.
1 %%%%%%%%%%%%
2 % es10.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all % chiudo tutte le finiestre aperte
2.6. GRAFICI 27
7 T=0.02; %passo di campionamento
8 t=0:T:50; % crea il vettore t
9 y=cos (2*t); % crea il vettore per f
10 z=exp ( -0.1*t).* cos (2*t); % crea il vettore per g
11 plot(t,y) %stampo il primo grafico
12 xlabel(t) % nome asse x
13 ylabel(f(t)) % nome asse y
14 title(primo grafico ) % titolo grafico
15 figure %apro una nuova figura
16 plot(t,z,r) %stampo il secondo grafico
17 xlabel(t) % nome asse x
18 ylabel(g(t)) % nome asse y
19 title(secondo grafico ) % titolo grafico
In questo caso abbiamo abbiamo utilizzato una scrittura molto pi` u compatta
e veloce per creare il vettore y. La funzione cos accetta come parametro di
ingresso anche un vettore e restituisce il corrispondente vettore y. Vale la
stessa cosa per exp e tutte le altre funzioni analoghe di Matlab. Osserviamo
che listruzione plot prevede un terzo parametro opzionale per specicare il
colore del segnale: r,b,c,k,g corrispondono a rosso, blu, ciano, nero, verde.
Esercizio 3. Facendo riferimento allEsempio 10, vedere cosa succede quan-
do:
tolgo la riga quindici
sostituisco la riga quindici con hold on.
28 CAPITOLO 2. FUNZIONALIT
`
A BASILARI DI MATLAB
Capitolo 3
Segnali e convoluzioni
3.1 Segnali pari e dispari, segnali complessi
Iniziamo ad applicare le funzionalit` a di Matlab calcolando la parte pari e
dispari di un segnale.
Esempio 11. Scrivere un programma che stampa il segnale
f(t) = e
sin(2t)
, t [5, 5], (3.1)
la sua parte pari e dispari (il tutto sullo stesso graco).
1 %%%%%%%%%%%%
2 % es11.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=0.02; %passo di campionamento
9 t=-5:T:5; % crea il vettore t
10 y=exp(sin (2*t));
11 y_rib=wrev(y); % creo il vettore per la funzione
12 % ribaltata
13 y_pari =0.5*(y+y_rib ); %vettore parte pari
14 y_disp =0.5*(y-y_rib ); %vettore parte dispari
29
30 CAPITOLO 3. SEGNALI E CONVOLUZIONI
15 plot(t,y) % grafici
16 hold on
17 plot(t,y_pari ,r)
18 plot(t,y_disp ,g)
19 xlabel(t)
20 legend(f(t),parte pari,parte dispari ) %legenda
21 grid on
In Figura 3.1 `e mostrato il graco che stampa Matlab.
5 4 3 2 1 0 1 2 3 4 5
1.5
1
0.5
0
0.5
1
1.5
2
2.5
3
t


f(t)
parte pari
parte dispari
Figura 3.1: Graco dellEsempio 11
Esercizio 4. Stampare la parte reale e immaginaria del segnale complesso
f(t) = e
j2

ft
, t [0, 0.5] (3.2)
con

f = 0.1.
3.2 Area ed energia di un segnale
In questa sezione vediamo come calcolare larea e lenergia (e quindi anche
il valore medio e la potenza) di un dato segnale. Iniziamo con i segnali a
tempo continuo.
3.2. AREA ED ENERGIA DI UN SEGNALE 31
Esempio 12. Scrivere un programma che stampa il segnale
f(t) = sinc(t), t R (3.3)
e ne calcola larea.
Chiaramente possiamo solo stampare il segnale su un sotto-intervallo limi-
tato di R, per esempio su [M, M] con M sucientemente grande. Scegliamo
M = 1000 e T = 0.02. Sapendo che
_

sinc(t)dt esiste, `e lecito considerare


la seguente approssimazione
_

sinc(t)dt
M
T

k=
M
T
Tsinc(kT), (k Z). (3.4)
Inne utilizziamo la funzione sinc di Matlab.
1 %%%%%%%%%%%%
2 % es12.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=0.02; %passo di campionamento
9 M=1000;
10 t=-M:T:M; % crea il vettore t
11 y=sinc(t);
12 plot(t,y) %stampa grafico
13 xlabel(t)
14 ylabel(f(t))
15 grid on
16 area=T*sum(y);%calcola area
17 disp([Area del sinc: num2str(area )])
Esercizio 5. Consideriamo il segnale dellEsempio 12. Calcolare il valore
medio lenergia e la potenza di f.
Esempio 13. Scrivere un programma che stampa il segnale periodico (su un
periodo)
f(t) = sin
3
(t), t R (3.5)
32 CAPITOLO 3. SEGNALI E CONVOLUZIONI
e ne calcola lenergia.
La periodicit`a del segnale `e T
p
= 2. Sapendo che
_
2
0
|f(t)|
2
dt esiste ed
`e nito, per calcolare lenergia `e lecita lapprossimazione
_
Tp
0
|f(t)|
2
dt

Tp
T

k=0
T|f(kT)|
2
, k Z (3.6)
dove T `e il passo di campionamento.
1 %%%%%%%%%%%%
2 % es13.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=0.02; %passo di campionamento
9 Tp=2*pi; %periodicita
10 t=0:T:Tp; % crea il vettore t
11 y=sin(t).^3;
12 plot(t,y) %stampa grafico
13 xlabel(t)
14 ylabel(f(t))
15 grid on
16 E=T*sum(y.^2);%calcola energia
17 disp([Energia della funzione: num2str(E)])
Esercizio 6. Consideriamo il segnale dellEsempio 13. Calcolare larea, il
valore medio e la potenza di f(t).
Ora prendiamo in considerazione i segnali a tempo discreto.
Esempio 14. Scrivere un programma che stampa il segnale a dominio di-
screto
f(nT) = e
0.02nT
sin(nT), n 0 (3.7)
con T = 1 e ne calcola lenergia.
3.2. AREA ED ENERGIA DI UN SEGNALE 33
1 %%%%%%%%%%%%
2 % es14.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=1; %passo di campionamento
9 M=200;
10 n=0:M; % crea il vettore n
11 y=exp ( -0.02*n*T).* sin(n*T);
12 stem(n,y) %stampa grafico
13 xlabel(n)
14 ylabel(f(nT))
15 E=T*sum(y.^2);%calcola energia
16 disp([Energia del segnale: num2str(E)])
Esercizio 7. Consideriamo il segnale dellEsempio 14. Calcolare larea, il
valore medio e la potenza di f.
Esempio 15. Consideriamo il segnale periodico a dominio discreto
f(nT) = sin
_
2nT
T
p
_
, n Z (3.8)
con T = 0.05 e T
P
= 2. Stampare f su un periodo e calcolarne larea.
1 %%%%%%%%%%%%
2 % es15.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=0.05; %passo di campionamento
9 Tp=2; %periodicita
10 n=0:Tp/T; % crea il vettore n
11 y=sin (2*pi*n*T/Tp);
12 stem(n,y) %stampa grafico
34 CAPITOLO 3. SEGNALI E CONVOLUZIONI
13 xlabel(n)
14 ylabel(f(nT))
15 A=T*sum(y);% calcolo area
16 disp([Area del segnale: num2str(A)])
In Figura 3.2 `e mostrato il graco che stampa Matlab.
0 5 10 15 20 25 30 35 40
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
n
f
(
n
T
)
Figura 3.2: Graco dellEsempio 15
Esercizio 8. Consideriamo il segnale dellEsempio 15. Calcolare lenergia di
f.
3.3 Convoluzione
In questa sezione introduciamo il calcolo di convoluzioni con Matlab. Per
semplicit` a desposizione, considereremo per primo il caso di segnali discreti
a supporto limitato.
Consideriamo due segnali a(n) e b(n). Sappiamo dalla teoria che la loro
convoluzione `e denita come
a b(n) =

k=
b(n k)a(k). (3.9)
Il codice seguente illustra luso del comando conv per il calcolo della convo-
luzione. I graci prodotti, riportati in Figura 3.3 e Figura 3.4, ne illustrano
il meccanismo. Il risultato `e illustrato in Figura 3.5.
3.3. CONVOLUZIONE 35
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %% Convoluzione di segnali discreti a supporto limitato %%
3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
5 close all % chiude le finestre figura aperte
6 clc % pulisce la command window
7
8 % Segnali a e b
9 a = [1 2 -1 3];
10 x_a = 0:3;
11
12 b = [-1 3 -5];
13 x_b = 0:2;
14
15 % Segnale ottenuto ribaltando b
16 b_meno = fliplr(b);
17 x_b_meno = - fliplr(x_b);
18
19 %% Grafici dei segnali di interesse
20 figure , title(Segnali di interesse )
21 subplot (131)
22 stem(x_a ,a,LineWidth ,2)
23 axis([-4 6 -5 3 ])
24 legend(a(n))
25 grid on;
26
27 subplot (132)
28 stem(x_b ,b,LineWidth ,2)
29 axis([-4 6 -5 3 ])
30 legend(b(n))
31 grid on;
32
33 subplot (133)
34 stem(x_b_meno ,b_meno ,r,LineWidth ,2)
35 axis([-4 6 -5 3 ])
36 legend(b_{-}(n))
37 grid on;
38
36 CAPITOLO 3. SEGNALI E CONVOLUZIONI
39 %% Rappresentazione grafica della convoluzione
40 figure , title(Convoluzione a*b)
41 n_c = length(a) + length(b) -1 ;
42
43 c = conv(a,b);
44
45 for i = 0:n_c -1
46 subplot (3,2,i+1)
47 stem(x_a ,a,LineWidth ,2)
48 hold on
49 stem(x_b_meno + i, b_meno ,r,LineWidth ,2)
50 axis([-4 6 -5 3 ])
51 set(gca ,YTick ,-4:3)
52 title ([c(,num2str(i),) = ,num2str(c(i+1))])
53 grid on;
54 end
55
56 %% Grafico della convoluzione c = a*b
57 figure
58 stem(c,b,LineWidth ,2)
59 title(c(n))
60 grid on;
Consideriamo ora un esempio di convoluzione tra segnali continui. Siano
dati i segnali rettangolari f(t) e g(t) deniti come
f(t) = A
f
rect
_
t t
f
D
f
_
,
g(t) = A
g
rect
_
t t
g
D
g
_
.
La convoluzione per segnali continui `e denita come
f g(t) :=
_

f(t )g() d.
Nel caso di interesse, lintegrale esiste. Quindi, scegliendo un periodo di
campionamento T sucientemente piccolo, possiamo scrivere
f g(t) =
_

f(t )g() d T

k=
f(t kT)g(kT).
3.3. CONVOLUZIONE 37
Figura 3.3: Segnali convolvendi a(n) e b(n) (in blu) e versione ribaltata di
b(n) (in rosso)
Figura 3.4: Calcolo della convoluzione c(n) := a b(n)
38 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Figura 3.5: Calcolo della convoluzione c(n) := a b(n)
Questa approssimazione ci permette di ricondurci al caso discreto, nel quale
possiamo ricorrere al comando conv di Matlab.
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %% Convoluzione di segnali continui a supporto limitato %%
3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
5 % Calcoliamo con Matlab una versione approssimata della
6 % convoluzione dei segnali continui
7
8 % f(t) = A_f * rect((t-t_f)/D_f)
9 % g(t) = A_g * rect((t-t_g)/D_g)
10
11 %% Segnali di interesse
12
13 clc
14 close all
15
16 % Parametri che definiscono i segnali
17
18 A_f = 1;
19 A_g = 1;
20
21 t_f = 2;
3.3. CONVOLUZIONE 39
22 t_g = 3;
23
24 D_f = 5;
25 D_g = 1;
26
27 % Approssimazione discreta
28 T = 0.001;
29 x = -5:T:5;
30
31 f = zeros(size(x));
32 f_inizio = find(x==t_f -0.5* D_f);
33 f_fine = find(x==t_f +0.5* D_f);
34 f(f_inizio:f_fine )=D_f;
35
36 g = zeros(size(x));
37 g_inizio = find(x==t_g -0.5* D_g);
38 g_fine = find(x==t_g +0.5* D_g);
39 g(g_inizio:g_fine) = D_g;
40
41 g_meno = fliplr(g);
42 x_g_meno = -fliplr(x);
43
44 %% Grafici
45 subplot (131)
46 plot(x,f,LineWidth ,2);
47 legend(f)
48 grid on
49
50 subplot (132)
51 plot(x,g,LineWidth ,2);
52 legend(g)
53 grid on
54
55 subplot (133)
56 plot(x_g_meno ,g_meno ,r,LineWidth ,2);
57 legend(g_{-})
58 grid on
59
40 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Figura 3.6: Segnali convolvendi f(t) e g(t) (in blu) e versione ribaltata di
g(t) (in rosso)
Figura 3.7: Graco di f g(t) per A
f
= A
g
= t
f
= t
g
= 1
60 %% Convoluzione (approssimazione discreta)
61 % Attenzione a moltiplicare per il passo di campionamento
62 conv_fg = T*conv(f,g);
63 x_conv = -10:T:10;
64 figure , plot(x_conv ,conv_fg ,b,LineWidth ,2)
65 legend(conv(f,g))
66 grid on
In Figura 3.6 e Figura 3.7 sono riportati rispettivamente i segnali f(t) e g(t)
e la loro convoluzione, nel caso A
f
= A
g
= D
f
= D
g
= 1.
Prendiamo ora in considerazione la risposta y di un sistema lineare (tempo
3.3. CONVOLUZIONE 41
invariante) ad un ingresso generico x. Dalla teoria sappiamo che y `e la
convoluzione tra risposta impulsiva h e lingresso x.
Esempio 16. Consideriamo un ltro lineare, causale con risposta impulsiva
h(t) = e
t
+ e
t
, t 0. (3.10)
Supponiamo di alimentare il ltro con un gradino unitario x allistante ze-
ro. Stampare la risposta impulsiva e la risposta y al gradino unitario per i
seguenti valori di :
= 0.4 + j0.6
= j0.6
= 0.04 + j0.6. (3.11)
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-
scutere la stabilit` a dei sistemi.
Sappiamo che
y(t) =
_

h(t )x()d =
_
t
0
h(t )x()d. (3.12)
Sotto ipotesi simili a quelle dellEsempio 12, ssando un T sucientemente
piccolo abbiamo la seguente approssimazione
y(t) T

t
T

k=0
h(t kT)x(kT). (3.13)
In altre parole possiamo approssimare y come il risultato di una convoluzione
discreta. In Matlab la funzione di convoluzione discreta `e conv(x,h).
1 %%%%%%%%%%%%
2 % es16.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 T=0.001;
9 alpha = -0.4+j*0.6;
42 CAPITOLO 3. SEGNALI E CONVOLUZIONI
10 % alpha=j*0.6;
11 % alpha =0.04+j*0.6;
12 t=0:T:30;
13 h=exp(alpha*t)+exp(conj(alpha )*t);
14 plot(t,h) % stampa risposta impulsiva
15 title(risposta impulsiva )
16 x=ones(1,length(t)); %ingresso
17 y=T*conv(x,h); %uscita del filtro
18 y=[y(1: length(t))];%riaggiustamento del vettore
19 figure
20 plot(t,y)
21 title(uscita del filtro )
Nella Figura 3.8 sono mostrate le risposte al gradino per i diversi . La va-
lutazione e i commenti riguardanti la stabilit`a vengono lasciati allo studente.
0 5 10 15 20 25 30
15
10
5
0
5
10
uscita del filtro


=0.4+i0.6
=i0.6
=0.04+i0.6
Figura 3.8: Risposte al gradino unitario del ltro dellEsempio 16
Esercizio 9. Consideriamo un ltro lineare, causale con risposta impulsiva
h(t) = e

1
t
+ e

1
t
+ e

2
t
+ e

2
t
, t 0. (3.14)
Supponiamo di alimentare il ltro con un gradino unitario x allistante ze-
ro. Calcolare la risposta impulsiva e la risposta y al gradino unitario per i
3.3. CONVOLUZIONE 43
seguenti valori di
1
e
2
:

1
= 0.4 + j0.6,
2
= 0.4 + j0.6

1
= 0.4 + j0.6,
2
= j0.6

1
= 0.4 + j0.6,
2
= 0.04 + j0.6

1
= j0.6,
2
= j0.6

1
= j0.6,
2
= 0.04 + j0.6

1
= 0.04 + j0.6,
2
= 0.04 + j0.6. (3.15)
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-
scutere la stabilit` a dei sistemi.
Esempio 17. Consideriamo un ltro lineare discreto, causale con risposta
impulsiva
h(n) =
n
+
n
, n 0. (3.16)
Supponiamo di alimentare il ltro con un gradino unitario discreto x alli-
stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per i
seguenti valori di :
= 0.8 + j0.4
= 0.8 + j0.6
= 0.8 + j0.63. (3.17)
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-
scutere la stabilit` a dei sistemi.
Sappiamo che
y(n) =

k=
h(n k)x(k) =
n

k=0
h(n k)x(k). (3.18)
Anche in questo caso utilizziamo la funzione conv.
1 %%%%%%%%%%%%
2 % es17.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
44 CAPITOLO 3. SEGNALI E CONVOLUZIONI
7 clc
8 alpha =0.8+j*0.4;
9 % alpha =0.8+j*0.6;
10 % alpha =0.8+j*0.63;
11 n=0:1:80;
12 h=alpha .^n+conj(alpha ).^n;
13 % stem(t,h) % stampa risposta impulsiva
14 % title(risposta impulsiva )
15 x=ones(1,length(n)); %ingresso
16 y=conv(x,h); %uscita del filtro
17 y=[y(1: length(n))];%riaggiustamento del vettore
18 % figure
19 stem(n,y)
20 title(uscita del filtro )
Nella Figura 3.9 sono mostrate le risposte al gradino per i diversi . La va-
lutazione e i commenti riguardanti la stabilit`a vengono lasciati allo studente.
0 10 20 30 40 50 60 70 80
10
5
0
5
10
15
uscita del filtro


=0.8+i0.4
=0.8+i06
=0.8+i0.63
Figura 3.9: Risposte al gradino unitario del ltro dellEsempio 17
Esercizio 10. Consideriamo un ltro lineare discreto, causale con risposta
impulsiva
h(n) =
n
1
+
1
n
+
n
2
+
2
n
, n 0. (3.19)
3.3. CONVOLUZIONE 45
Supponiamo di alimentare il ltro con un gradino unitario discreto x alli-
stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per i
seguenti valori di
1
e
2
:

1
= 0.8 + j0.4,
2
= 0.8 + j0.4

1
= 0.8 + j0.4,
2
= 0.8 + j0.6

1
= 0.8 + j0.4,
2
= 0.8 + j0.63

1
= 0.8 + j0.6,
2
= 0.8 + j0.6

1
= 0.8 + j0.6,
2
= 0.8 + j0.63

1
= 0.8 + j0.63,
2
= 0.8 + j0.63. (3.20)
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-
scutere la stabilit` a dei sistemi.
46 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Capitolo 4
Analisi di Fourier
In questo capitolo arontiamo il problema del calcolo delle serie e delle
trasformate di Fourier in Matlab.
4.1 Serie di Fourier
In questa sezione parleremo della serie di Fourier. Dato un segnale periodico
x(t) di periodo T
p
a energia nita sul periodo, possiamo sempre esprimerlo
come
x(t) =

k=
a
k
e
j2kFt
(4.1)
dove
a
k
=
1
T
p
_
Tp
0
x(t)e
j2kFt
dt, F =
1
T
p
. (4.2)
Esempio 18. Considerare lo sviluppo in serie di Fourier di unonda quadra
x(t) = A
0
rep
Tp
rect
_
t
dT
p
_
(4.3)
con duty cycle d = 0.3, periodo T
p
= 2 e ampiezza A
0
= 7. Illustrare leetto
Gibbs troncando lo sviluppo a N = 10, 30, 50 armoniche.
In questo caso `e facile vedere che
a
k
= A
0
dsinc(kd). (4.4)
47
48 CAPITOLO 4. ANALISI DI FOURIER
1 %%%%%%%%%%%%
2 % es18.m %
3 %%%%%%%%%%%%
4
5 % Serie di Fourier troncata del segnale
6 % x(t) = rep_Tp A0 rect(t/(dTp))
7
8 close all
9
10 Tp=2; % Tempo di campionamento
11 d=0.3; % Duty cycle
12 A0=7; % Ampiezza del segnale rect
13
14 % Numero di armoniche considerate nel troncamento
15 N=10;
16 % N=30;
17 % N=50;
18
19 %calcolo dei coefficienti di Fourier
20 a0=A0*d*sinc (0);
21 for k=1:N
22 a_piu(k)=A0*d*sinc(k*d); % a_n per n>0
23 a_meno(k)=A0*d*sinc(-k*d); % a_n per n<0
24 end
25
26 %calcolo della serie di Fourier
27 t=0:0.01:3;
28 F = 1/Tp;
29 x=a0*ones(1,length(t));
30 for k=1:N
31 x=x+a_meno(k)*exp(-1i*k*2*pi*F*t)+...
32 a_piu(k)*exp(1i*k*2*pi*F*t);
33 end
34
35 %stampa segnale
36 plot(t,x)
In Figura 4.1 sono mostrate le corrispondenti serie troncate.
4.1. SERIE DI FOURIER 49
0 0.5 1 1.5 2 2.5 3
1
0
1
2
3
4
5
6
7
8


N=10
N=30
N=50
Figura 4.1: Serie di Fourier troncate dellEsempio 18
Esempio 19. Consideriamo la serie di Fourier
x(t) = 2

k=1
(1)
k1
1
k
sin(kt), t R. (4.5)
Stampare la corrispondente serie di Fourier troncata per N = 10, 30, 50.
1 %%%%%%%%%%%%
2 % es19.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 N=10;
8 % N=30;
9 % N=50;
10 %calcolo della serie di Fourier
11 t=0:0.01:20;
12 x=zeros(1,length(t));
13 for k=1:N
14 x=x+2*( -1)^(k-1)/k*sin(k*t);
15 end
16 %stampa segnale
50 CAPITOLO 4. ANALISI DI FOURIER
17 plot(t,x)
0 2 4 6 8 10 12 14 16 18 20
4
3
2
1
0
1
2
3
4


N=10
N=30
N=50
Figura 4.2: Serie di Fourier troncate dellEsempio 19
In Figura 4.2 sono mostrate le corrispondenti serie troncate.
Esercizio 11. Consideriamo il segnale, periodico di periodo T
p
= 2, cos`
denito per t [0, 2):
x(t) =
_
2(1 t), 0 t < 1
2, 1 t < 2.
(4.6)
Stampare la corrispondente serie di Fourier troncata per N = 10, 30, 50.
Svolgimento.
1 %%%%%%%%%%%%%%%%%%%%%%%
2 % ex11.m %
3 %%%%%%%%%%%%%%%%%%%%%%%
4
5 close all
6
7 Tp = 2; %Periodo del segnale
8 T = 0.01; % Discretizzazione
4.1. SERIE DI FOURIER 51
9 t = 0:T:Tp;
10 % segnale
11 st = zeros(1,length(t));
12 for i = 1: length(t)
13 if(t(i) < 1)
14 st(i) = 2*(1-t(i));
15 else
16 st(i)=2;
17 end
18 end
19 figure;
20 plot(t,st ,LineWidth ,2);
21 title(Segnale originale su un periodo )
22 grid on;
23 axis ([0 2 -1 3]);
24
25 %% Serie di Fourier
26 %N = 10;
27 N = 30;
28 %N = 50;
29 sk = zeros(1,N);
30 sk_ = zeros(1,N);
31 q = 1:N;
32 for k= 1: length(t)
33 sk = sk + T*1/Tp*st(k)*exp(-1i*2*pi*q*t(k)/Tp);
34 sk_ = sk_ + T*1/Tp*st(k)*exp(1i*2*pi*q*t(k)/Tp);
35 end
36 figure;
37 stem (1:N,sk ,r,LineWidth ,2);
38 grid on;
39 title(Coefficienti della serie di Fourier )
40
41 %% Ricostruzione del segnale mediante la serie troncata
42 x = T*1/2* sum(st)*ones(1,length(t));
43 for k = 1:N
44 x = x + sk(k)*exp(1i*2*pi*q(k)*t/2)+...
45 sk_(k)*exp(-1i*2*pi*q(k)*t/2);
46 end
52 CAPITOLO 4. ANALISI DI FOURIER
47 figure;
48 plot(t,st ,--,LineWidth ,2)
49 hold on
50 plot(t,x,LineWidth ,2);
51 grid on;
52 legend(Segnale originale ,...
53 [Segnale ricostruito , N=,num2str(N)])
54 axis ([0 2 -1 3]);
Esercizio 11 Bis. Consideriamo la serie di Fourier
x(t) =

k=
a
k
e
jkt
(4.7)
dove
a
k
=
_
0, k, pari

2
k
2
, k dispari.
. (4.8)
Stampare la corrispondente serie di Fourier troncata per N = 1, 2, 3, 10, 30.
4.2 Trasformata di Fourier per segnali a tem-
po continuo
Dato un segnale x(t) a tempo continuo, la corrispondente trasformata di
Fourier `e denita come
X(f) =
_

x(t)e
j2ft
dt, f R (4.9)
Se il precedente integrale esiste ed `e nito, allora `e lecita la seguente appros-
simazione
X(f) T
M
T

k=
M
T
x(kT)e
j2kfT
, f R, (4.10)
dove T `e il passo di campionamento e M `e un numero sucientemente eleva-
to. Inoltre per rappresentare X(f) dobbiamo anche campionare la frequenza,
per cui otteniamo
X(nF) T
M
T

k=
M
T
x(kT)e
j2knFT
, n Z (4.11)
4.2. TRASFORMATADI FOURIER PER SEGNALI ATEMPOCONTINUO53
dove F `e una quantit` a sucientemente piccola.
Propriet`a della trasformata di Fourier
Ricordiamo le propriet`a fondamentali della trasformata di Fourier nella se-
guente tabella.
segnale trasformata
Linearit` a s
1
(t) + s
2
(t) S
1
(f) + S
2
(f)
Simmetria S(t) s(f)
Ribaltamento delle coordinate s(t) S(f)
Coniugio nel tempo s

(t) S

(f)
Coniugio in frequenza s

(t) S

(f)
Traslazione nel tempo s(t t
0
) S(f)e
j2ft
0
Traslazione in frequenza s(t)e
j2ft
0
S(f f
0
)
Convoluzione nel tempo x y(t) X(f)Y (f)
Convoluzione in frequenza x(t)y(t) X Y (f)
Cambio di scala s(at)
1
|a|
S(
f
a
)
Area del segnale nel tempo area(s) S(0)
Area del segnale in frequenza s(0) area(S)
Energia del segnale E
s
=
_

|s(t)|
2
dt E
S
=
_

|S(f)|
2
df
Testiamo alcune delle propriet` a sopra elencate:
1 % Test sulla Trasformata di Fourier
2
3 close all , clc
4
5 % campionamento di tempo e frequenza
6 T = 0.01;
7 F = 0.01;
8 M = 20;
9 t = -M:T:M;
10 N = 5;
11
12 % segnale s_1
13 s_1 = 3*sinc(t);
14 figure
15 plot(t,s_1 ,b,LineWidth ,2)
54 CAPITOLO 4. ANALISI DI FOURIER
16 legend(s_1(t)= 3sinc(t))
17 grid on
18 %% Traslazione in frequenza
19 f = -N:F:N;
20 S_1 = zeros(1,length(f));
21 for i=1: length(f)
22 S_1(i) = T * s_1 * exp(-1i*2*pi*f(i)*t).;
23 end
24 figure , plot(f,real(S_1),LineWidth ,2)
25 grid on
26 hold on
27
28 pause
29
30 % segnale moltiplicato nel tempo per un esponenziale complesso
31 f_0 = 2;
32 s_1_e = s_1.*exp(1i*2*pi*f_0*t);
33 S_1_t = zeros(1,length(f));
34 for i=1: length(f)
35 S_1_t(i) = T * s_1_e * exp(-1i*2*pi*f(i)*t).;
36 end
37 plot(f,real(S_1_t),r -.,LineWidth ,2)
38 legend(S_1(f),S_1(f-f_0))
39
40 pause
41
42 % Modulazione
43 s_1_cos = s_1.*cos (2*pi*f_0*t);
44 S_1_mod = zeros(1,length(f));
45 for i=1: length(f)
46 S_1_mod(i) = T * s_1_cos * exp(-1i*2*pi*f(i)*t).;
47 end
48 plot(f,real(S_1_mod),k --,LineWidth ,2)
49 legend(S_1(f),S_1(f-f_0),Modulazione in coseno )
50
51 %% Area del segnale
52
53 % s_1 = 3*sinc(t)
4.2. TRASFORMATADI FOURIER PER SEGNALI ATEMPOCONTINUO55
54
55 % calcolo approssimato dell area:
56 Area_approssimata = T*sum(s_1)
57
58 % Dalla teoria sappiamo che
59 % s(t) = 3sinc(t) --> S(f)=3 rect(f)
60
61 S_0 = 3
62
63 %% Convoluzione nel tempo
64
65 % segnale s_2
66 s_2 = zeros(length(t),1);
67 s_2(M/T+1:M/T+5/T)=1;
68 s_2(M/T+2/T:M/T+5/T)=0.5;
69 % segnale s_2
70 s_3 = zeros(length(t),1);
71 s_3(M/T-1/T:M/T+3/T)=0.75;
72
73 figure
74 plot(t,s_2 ,b,LineWidth ,2)
75 hold on
76 plot(t,s_3 ,r,LineWidth ,2)
77 grid on
78 legend(s_2,s_3)
79 % Trasformata di Fourier di conv(s_2 ,s_3)
80 s2_conv_s3 = T*conv(s_2 ,s_3);
81 s2_conv_s3_red = s2_conv_s3 (( length(s1_conv_s2 ) -1)/2 - M/T:...
82 (length(s1_conv_s2 ) -1)/2+M/T);
83 plot(t,s2_conv_s3_red ,k -- ,LineWidth ,2)
84 legend(s_2,s_3,conv(s_2 ,s_3))
85
86 % Trasformata di Fourier di s_2
87 S_2 = zeros(1,length(f));
88 for i=1: length(f)
89 S_2(i) = T * exp(-1i*2*pi*f(i)*t) * s_2;
90 end
91 % Trasformata di Fourier di s_2
56 CAPITOLO 4. ANALISI DI FOURIER
92 S_3 = zeros(1,length(f));
93 for i=1: length(f)
94 S_3(i) = T * exp(-1i*2*pi*f(i)*t) * s_3;
95 end
96
97
98 % Trasformata di Fourier di conv(s_1 ,s_2)
99 S_conv = zeros(1,length(f));
100 for i=1: length(f)
101 S_conv(i) = T * exp(-1i*2*pi*f(i)*t) * s2_conv_s3_red ;
102 end
103
104 figure
105 plot(f,real(S_2.*S_3),b --,LineWidth ,2)
106 hold on
107 plot(f,real(S_conv),r -.,LineWidth ,2)
108 legend(S_2(f)S_3(f),TF(conv(s_2 ,s_3)))
109 grid on
Esempio 20. Stampare la trasformata di Fourier del segnale
x(t) = sinc (2t) , t R. (4.12)
1 %%%%%%%%%%%%
2 % es20.m %
3 %%%%%%%%%%%%
4
5 close all
6
7 T = 0.05; % passo di campionamento di x
8 M = 100;
9 t = -M:T:M; % intervallo temporale [-M,M]
10 F = 0.05; % passo di campionamento di X
11 N = 5;
12 f = -N:F:N; % intervallo frequenziale [-N,N]
13
14 % segnale
4.3. TRASFORMATADI FOURIER PER SEGNALI ATEMPODISCRETO57
15 x = sinc (2*t);
16 % stampa segnale
17 figure , plot(t,x), title(Segnale x(t))
18
19 %trasformata di Fourier
20 X=zeros(1,length(f));
21 for k=1: length(t)
22 X=X+T*x(k)*exp(-1i*2*pi*f*t(k));
23 end
24
25 %stampa trasformata
26 plot(f,real(X),r),title(Trasformata X(f))
27 axis ([ -1.5 1.5 -0.1 0.6])
28 grid on
Esercizio 12. Ripetere lEsempio 20 con F = 0.01 ed F = 0.1. Quale
fenomeno `e possibile osservare?
Esercizio 13. Stampare la trasformata di Fourier del segnale
x(t) = e
2|t|
, t R. (4.13)
Esercizio 13 Bis. Stampare il modulo della trasformata di Fourier per
10 2f 10 dei seguenti segnali
x
1
(t) = e
0.5|t|
, t R (4.14)
x
2
(t) = cos(7t)e
0.5|t|
, t R. (4.15)
Come si dierenziano le due trasformate?
4.3 Trasformata di Fourier per segnali a tem-
po discreto
Consideriamo un segnale a tempo discreto
x(nT), n Z. (4.16)
58 CAPITOLO 4. ANALISI DI FOURIER
La corrispondente trasformata di Fourier `e
X(f) =

n=
Tx(nT)e
j2fnT

M
T

n=
M
T
Tx(nT)e
j2fnT
, f R (4.17)
dove M `e un numero sucientemente grande. Anche in questo caso dobbiamo
campionare linsieme delle frequenze
X(kF) =
M
T

n=
M
T
Tx(nT)e
j2knFT
, k Z (4.18)
dove F `e scelto sucientemente piccolo.
Esempio 21. Stampare la trasformata di Fourier del segnale a dominio
discreto con T = 1
x(n) =
_
1, |n| 10
0, |n| > 10
. (4.19)
1 %%%%%%%%%%%%
2 % es21.m %
3 %%%%%%%%%%%%
4
5 clc , close all
6
7 n= -10:10;
8 %segnale
9 x=ones(1,length(n));
10
11 %trasformata di Fourier
12 F=0.01; 6
13 f= -1.5:F:1.5;
14 X=zeros(1,length(f));
15 for k=1: length(n)
16 X=X+x(k)*exp(-1i*2*pi*f*n(k));
17 end
18 plot(f,real(X))%stampa trasformata
4.3. TRASFORMATADI FOURIER PER SEGNALI ATEMPODISCRETO59
Esercizio 14. Stampare la trasformata di Fourier del segnale a dominio
discreto con T = 1
x(n) = sinc (3n) , n Z. (4.20)
Esempio 22. Si consideri il segnale dellEsempio 21 ed il segnale periodico
y(n) = rep
N
x(n), N = 40. (4.21)
Calcolare i coecienti di Fourier a
k
di y(n) e stampare sul graco dellEsem-
pio 21 il segnale a tempo discreto
k
N
Na
k
. (4.22)
Cosa si pu` o osservare dal graco? Ricordare che lespressione assunta dalla
trasformata di Fourier per segnali discreti periodici di periodo T
p
= NT `e
S(kF) =
N1

n=0
Ts(nT)e
j2knFT
, (4.23)
con F =
1
Tp
. I coecienti a
k
della serie di Fourier corrispondente si ottengono
dalla formula precedente come
a
k
= FS(kF) =
1
T
p
S(kF). (4.24)
1 %%%%%%%%%%%%
2 % es22.m %
3 %%%%%%%%%%%%
4
5 clc , close all
6 n= -10:10;
7 %segnale
8 x=ones(1,length(n));
9 %trasformata di Fourier
10 F=0.01;
11 f=-1:F:1;
12 X=zeros(1,length(f));
13 for k=1: length(n)
60 CAPITOLO 4. ANALISI DI FOURIER
14 X=X+x(k)*exp(-1i*2*pi*f*n(k));
15 end
16 figure ,plot(f,real(X))%stampa trasformata
17
18 % coefficienti di Fourier di y(n)
19 y=ones(1,length(n));
20 N=40;
21 k= -40:40;
22 a = zeros(1,length(k));
23 for l=1: length(k)
24 a(l)=1/N*exp(-1i*2*pi/N*k(l)*n)*y;
25 end
26 hold on
27 stem(k/N,N*a,r)
28 legend(Trasformata del segnale discreto non periodico ,...
29 Trasformata del segnale discreto periodico )
Esercizio 15. Ripetere lEsempio 22 ponendo T = 21. Cosa succede? Dare
una spiegazione teorica del risultato trovato.
4.4. CAMPIONAMENTO E ALIASING 61
4.4 Campionamento e aliasing
Ricordiamo brevemente lenunciato del fondamentale
Teorema 4.1 (Nyquist-Shannon). Sia s(t), t R, un segnale limitato in
banda, ovvero la cui trasformata di Fourier soddisfa
S(f) = 0 per |f| > B.
Allora, s(t) pu`o essere ricostruito esattamente a partire dai suoi campioni
s(nT), n Z, presi con frequenza F
c
2B campioni al secondo. La formula
per la ricostruzione esatta del segnale `e:
s(t) =

n=
s(nT)sinc [F
c
(t nT)] .
Esempio 23. Lesempio seguente illustra il meccanismo di ricostruzione dei
segnali a banda limitata a partire da una loro versione campionata, eviden-
ziando come la scelta della frequenza di campionamento sia fondamentale
per evitare laliasing.
1 %Il seguente codice consente di visualizzare le operazioni
2 %di campionamento e interpolazione su diversi tipi di segnali.
3
4 %% Definizione del segnale e studio nel tempo
5 clear all;
6 close all;
7 clc
8
9 camp = 0.001;
10 t = -4:camp :4;
11 k = length(t);
12
13 f_x = 0.5;
14
15 % Scegliere il segnale:
16 %x = sin (2*pi*f_x*t); disp([Banda = ,num2str(f_x )])
17 %x = cos (2*pi*2* f_x*t); disp([Banda = ,num2str (2* f_x )])
18 x = 4*sinc(t*4); disp([Banda = 2])
19
62 CAPITOLO 4. ANALISI DI FOURIER
20 figure;
21 grid on;
22 hold on;
23 plot(t,x);
24 title(Segnale originale );
25 fs = input(Frequenze di campionamento. Valore di fs?\n);
26 T = 1/fs;
27 nT = -4:T:4;
28
29 % Selezionare il segnale campionato:
30 %xn = sin (2*pi*f_x*nT);
31 %xn = cos (2*pi*2* f_x*nT);
32 xn = 4*sinc(nT*4);
33
34 stem(nT ,xn ,r);
35
36 %filtro interpolatore
37 q = fs*sinc(t*fs);
38 segnale_interpolato = zeros(1,length(t));
39
40 figure;
41 hold on;
42 grid on;
43 stem(nT ,xn ,r);
44 for i = 1: length(nT)
45 temp = xn(i).* sinc((t - ((i-1 -(4/T))*T))*fs);
46 plot(t,temp);
47 segnale_interpolato = segnale_interpolato + temp;
48 end
49 title(Interpolazione dei campioni );
50
51 figure;
52 plot(t,x,--,LineWidth ,2);
53 title(Segnale originale );
54 hold on
55 plot(t,segnale_interpolato ,r -.,LineWidth ,2);
56 grid on;
57 title(Segnale ricostruito );
4.4. CAMPIONAMENTO E ALIASING 63
58
59 %% Studio in frequenza
60 clc
61 disp(Studio in frequenza );
62 close all;
63
64 F=0.005; %passo di campionamento di x
65 f=-10:F:10;
66 %trasformata di Fourier
67 X=zeros(1,length(f));
68 for k=1: length(t)
69 X=X+camp*x(k)*exp(-1i*2*pi*f*t(k));
70 end
71 %stampa trasformata segnale originale
72 figure;
73 plot(f,real(X))
74 grid on;
75 title(Trasformata di Fourier del segnale originale ,...
76 LineWidth ,2);
77
78 pause
79
80 Xn=zeros(1,length(f));
81 for k=1: length(nT)
82 Xn=Xn+ T*xn(k)*exp(-1i*2*pi*f*nT(k));
83 end
84 %stampa trasformata segnale campionato
85 figure;
86 hold on;
87 plot(f,real(Xn));
88 title(Trasformata di Fourier del segnale campionato ,...
89 LineWidth ,2);
90 grid on
91 pause
92
93 Qn=zeros(1,length(f));
94 for k=1: length(t)
95 Qn=Qn + camp*q(k)*exp(-1i*2*pi*f*t(k));
64 CAPITOLO 4. ANALISI DI FOURIER
96 end
97 %stampa trasformata del filtro interpolatore
98 hold on
99 plot(f,real(Qn),r -,LineWidth ,2);
100 grid on;
101
102 %% trasformata del segnale ricostruito in frequenze Xn(f)*Q(f)
103 segnale_filtrato = real(Xn).* real(Qn);
104
105 figure;
106 plot(f,real(X))
107 hold on
108 plot(f,segnale_filtrato ,r -.,LineWidth ,2);
109 grid on;
110 legend(Trasformata del segnale originale ,...
111 Trasformata del segnale ricostruito )
112 title(Trasformata di Fourier del segnale filtrato );
Esercizio 16. Consideriamo il segnale a banda innita dellEsercizio 13.
Ripetere lesercizio con T = 0.1, T = 0.5 e T = 1. Motivare, conoscendo la
banda del segnale, i risultati trovati.
Capitolo 5
Sistemi LTI discreti
5.1 Introduzione ai sistemi LTI discreti
In questa sezione parliamo dei sistemi lineari discreti di tipo causale attra-
verso esempi che descrivono la dinamica di una certa popolazione. Prelimi-
narmente, richiamiamo alcuni risultati sulla stabilit` a BIBO per questa classe
di modelli.
Denizione 5.1 (Stabilit` a BIBO per sistemi discreti). Un sistema LTI
causale discreto del tipo
y(n) = h u(n)
si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) se
e solo se per ogni ingresso limitato u(n) esiste B > 0 tale che |y(n)| B per
ogni n 0.
Vale il seguente
Teorema 5.1 (Condizioni necessarie e sucienti per la BIBO stabilit`a).
Dato il sistema LTI discreto causale
y(n) = h u(n)
le seguenti condizioni sono equivalenti:
1. Il sistema `e BIBO stabile
65
66 CAPITOLO 5. SISTEMI LTI DISCRETI
2. La risposta impulsiva `e tale che
+

k=0
|h(k)| < .
Supponiamo ora che il modello ingresso-uscita corrisponda ad una funzio-
ne di trasferimento H(z) razionale e che questa sia in forma minima, ovvero
priva di cancellazioni. Allora, esprimendo il sistema nella forma in spazio di
stato
_
x(n + 1) = Ax(n) + Bu(n)
y(n) = Cx(n) + Du(n)
, (5.1)
in cui H(z) = C(zIA)
1
B+D, possiamo introdurre unulteriore condizione
necessaria e suciente per la stabilit`a BIBO:
Teorema 5.2. Il sistema in forma minima (5.1) `e BIBO stabile se e solo se
gli autovalori di A hanno tutti modulo minore di uno.
Sia x(n) il numero di individui che costituiscono la popolazione allistante
n. In caso di risorse nulle la specie tende ad estinguersi con un tasso di
mortalit` a pari ad m secondo la seguente equazione alle dierenze
x(n + 1) = mx(n). (5.2)
Esempio 24. Si consideri una popolazione con m = 0.8 e sia x(n) il numero
di individui costituenti la popolazione allistante n. Supponendo che attual-
mente il numero di individui sia pari a 50 (x(0) = 50), calcolare la dinamica
della popolazione dallistante 0 a 20.
1 %%%%%%%%%%%%
2 % es24.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 m=0.8;
9 x(1)=50; % condizione iniziale
10 for n=2:21
11 x(n)=m*x(n-1);
5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 67
12 end
13 stem (0:20 ,x) %stampa grafico
14 xlabel(n)
15 ylabel(x(n))
Ora supponiamo che ci siano delle risorse disponibili costanti che possono
sostenere una popolazione di numerosit` a R. In questa situazione c`e un
tasso di natalit` a dipendente dalla dierenza fra la popolazione sostenibile
dallambiente R e quella presente
x(n + 1) = mx(n) + (R x(n)). (5.3)
Esempio 25. Si consideri una popolazione con m = 0.8, R = 20 e sia x(n)
il numero di individui costituenti la popolazione allistante n. Supponendo
che attualmente il numero di individui sia pari a 50, calcolare la dinamica
della popolazione dallistante 0 a 20. Interpretare il risultato in termini di
evoluzione libera e risposta forzata.
Svolgimento.
Possiamo riscrivere il sistema nella forma (5.1):
_
x(n + 1) = (m1)x(n) + R
y(n) = x(n)
,
dove
A = a := m1, B = 1, C = 1, D = 0, u(t) = R, (t 0).
Ricordiamo lespressione per luscita di un sistema in funzione delle matrici
che lo descrivono, cio`e
x(n) = A
n
x(0) +
n1

i=0
A
i
Bu(n 1 i)
y(n) = CA
n
x(0) +
n1

i=0
CA
i
Bu(n 1 i) + Du(n)
Il primo addendo nellespressione di y(n) descrive levoluzione libera del si-
stema, cio`e leetto delle condizioni iniziali, mentre il secondo `e chiamato
termine di evoluzione forzata. Ricaviamo per il nostro esempio lequazione
x(n) = a
n
x(0) +
n1

i=0
a
i
R.
68 CAPITOLO 5. SISTEMI LTI DISCRETI
Poiche |a| = 0.2 < 1, per n +, avremo
x

= lim
n+
x(n) =
1
1 a
R =
50
3
.
Simuliamo il sistema per vericare i risultati ottenuti. Landamento demo-
graco della popolazione `e riportato in Fig. 25.
1 %%%%%%%%%%%%
2 % es25.m %
3 %%%%%%%%%%%%
4
5 close all
6 clc
7 m = 0.8;
8 R = 20;
9 T = 20;
10 x = zeros(1,T);
11 x(1)= 50; %condizione iniziale
12 t = 0:T;
13
14 for n=2:T+1
15 x(n)=m*x(n -1)+(R-x(n -1));
16 end
17 stem (0:T,x) %stampa grafico
18 xlabel(n)
19 ylabel(x(n))
20
21 a = m-1;
22 disp([Valore di a = ,num2str(a)])
23 disp([Limite di x(n) per n tendente allinfinito = ...
24 ,num2str (1/(1 -a)*R)])
25 grid
26
27 % Evoluzione libera
28 x_l = zeros(size(x));
29 x_l (1)=x(1);
30 for n=2:T+1
31 x_l(n)=a*x_l(n-1);
5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 69
32 end
33
34 % Evoluzione forzata
35 x_f = zeros(size(x));
36 for n=2:T+1
37 x_f(n) = (1-a^(n-1))/(1 -a)*R;
38 end
39
40 figure
41 subplot (311) , stem(t,x_l ,r),grid ,legend(Ev. libera )
42 subplot (312) , stem(t,x_f ,b),grid ,legend(Ev. forzata )
43 subplot (313) , stem(t,x,k --,LineWidth ,2),...
44 grid ,hold on ,stem(t,x_f+x_l ,g),
45 legend(x(n),x_l + x_f)
0 2 4 6 8 10 12 14 16 18 20
0
5
10
15
20
25
30
35
40
45
50
n
x
(
n
)
.
Figura 5.1: Andamento demograco della popolazione, Esercizio 25
Esercizio 17. Ora supponiamo che il numero di individui nati allistante
n dipenda dalla dierenza fra la popolazione sostenibile dallambiente R e
quella presente allistante n 2 per un tasso di fertilit` a t. Il nuovo sistema
diventa:
x(n) = mx(n 1) + (R tx(n 2)). (5.4)
Calcolare la dinamica della popolazione dallistante 0 a 20 per i seguenti casi
x(1) = 10, x(0) = 20, m = 0.8, t = 0.4, R = 20
x(1) = 10, x(0) = 20, m = 0.8, t = 1, R = 20. (5.5)
70 CAPITOLO 5. SISTEMI LTI DISCRETI
Sulla base dei graci, a quale classe di esseri viventi pu`o essere associata
la dinamica del primo e del secondo caso rispettivamente? Riettere sulla
dinamica dei due sistemi.
5.2 Risposta impulsiva
Consideriamo il modello (5.4) della dinamica di una popolazione. Tale mo-
dello pu` o essere visto come un sistema LTI discreto con ingresso costante
u(n) = R:
x(n) = mx(n 1) tx(n 2) + u(n). (5.6)
Perci` o, la risposta impulsiva h(n) di tale modello si pu` o ottenere imponendo
u(n) = (n) con x(2) = 0 e x(1) = 0.
Esempio 26. Stampare la risposta impulsiva del modello (5.6) con
1. m = 0.8 e t = 0.4
2. m = 0.8 e t = 1.
Guardando i graci prodotti, dire se i corrispondenti sistemi sono stabili o
meno e vericare che le conclusioni trovate siano conformi ai risultati trovati
nellEsercizio 17.
1 %%%%%%%%%%%%
2 % es26.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 m=0.8;
9 T = 10000;
10 u=[0 0 1 zeros(1,T)]; %ingresso delta(n)
11 %% Primo caso (t = 0.4)
12 t=0.4;
13 h = zeros(T+3 ,1); % condizione iniziali nulle
14 for n=3:T+3
15 h(n)=m*h(n -1)+(u(n)-t*h(n -2));
16 end
5.2. RISPOSTA IMPULSIVA 71
17 figure
18 stem (0:T,h(3:T+3)) %stampa grafico
19 axis([-1 20, -0.3 1.3])
20 xlabel(n)
21 ylabel(x(n))
22 title(Caso t = 0.4)
23
24 % Approssimiamo la serie dei moduli di h(k):
25 disp([Serie dei moduli approssimata (T= ,...
26 num2str(T),) vale ])
27 sum(abs(h))
28
29 %% Secondo caso (t = 1)
30 t=1;
31 h = zeros(T+3 ,1); % condizione iniziali nulle
32 for n=3:T+3
33 h(n)=m*h(n -1)+(u(n)-t*h(n -2));
34 end
35 figure
36 stem (0:T,h(3:T+3),r) %stampa grafico
37 axis([-1 100, -1.5 1.5])
38 xlabel(n)
39 ylabel(x(n))
40 title(Caso t = 1)
41
42 % Approssimiamo la serie dei moduli di h(k):
43 disp([Serie dei moduli approssimata (T= ,...
44 num2str(T),) vale ])
45 sum(abs(h))
Esercizio 18. Consideriamo un modello a tempo discreto con ingresso x e
uscita y che esegue la media mobile su tre punti:
y(n) =
1
3
(x(n) + x(n 1) + x(n 2)). (5.7)
Calcolare la risposta impulsiva.
Ora supponiamo di voler calcolare la risposta x di un sistema lineare
(causale) ad un ingresso generico u partendo da condizioni iniziali nulle.
72 CAPITOLO 5. SISTEMI LTI DISCRETI
In questa situazione potremo applicare lapproccio iterativo dellEsempio 25
oppure, avendo a disposizione la risposta impulsiva h, calcolare x tramite la
convoluzione tra u e h.
Esempio 27. Consideriamo il modello (5.6), supponendo che le risorse di-
sponibili varino secondo un bioritmo (ad esempio le stagioni):
u(n) = R
sin(
n
N
0
)
2
+ S
0
. (5.8)
Calcolare la dinamica della popolazione dallistante 0 a 60 partendo da
condizioni iniziali nulle con m = 0.6, t = 0.2, R = 5, N
0
= 2 e S
0
= 10.
1 %%%%%%%%%%%%
2 % es27.m %
3 %%%%%%%%%%%%
4
5 clear all
6 close all
7 clc
8 m=0.6;
9 t=0.2;
10 R=5;
11 N0=2;
12 S0=10;
13 % calcolo della risposta impulsiva
14 u=[0 0 1 zeros (1 ,60)]; %ingresso delta(n)
15 h(1)=0; % condizione iniziali
16 h(2)=0;
17 for n=3:63
18 h(n)=m*h(n-1)-t*h(n-2)+u(n);
19 end
20 h=h(3: end); % risposta impulsiva dall istante zero
21 %calcolo della risposta del sistema
22 n=0:60;
23 u=R*sin(n/N0)/2+S0;
24 x=conv(h,u);
25 x=x(1:61); % riaggiustamento del vettore
26 stem (0:60 ,x) %stampa grafico
27 xlabel(n)
5.3. RISPOSTA IN FREQUENZA 73
28 ylabel(x(n))
Esercizio 19. Consideriamo una popolazione di pesci da allevamento la cui
dinamica `e descritta dal modello (5.6) con m = 0.6, t = 0.2, x(2) = 0 e
x(1) = 0. Inizialmente, dalistante 0 a 39, i proprietari dellallevamento
decidono di non intervenire per modicare le risorse naturali che ore il
laghetto che ospita questi pesci
u(n) = 5
sin(
n
2
)
2
+ 10, 0 n < 40. (5.9)
Tuttavia, gli allevatori non sono soddisfatti del numero di pesci che produ-
cono e dallistante n = 40 immettono nel lago una risorsa (che si aggiunge a
quella naturale) che decresce di una unit`a allaumentare di n
u(n) = 5
sin(
n
N
0
)
2
+ 10 + 80 n, 40 n < 80. (5.10)
Dopo questa decisione gli allevatori sono contenti, ma vorrebbero che la po-
polazione di questi pesci fosse costante nel tempo. Decidono perci` o di co-
struire un impianto sosticato che fornisce risorse costanti nel tempo alla
popolazione di pesci
u(n) = 30, n 80. (5.11)
Stampare u e la corrispondente dinamica della popolazione.
5.3 Risposta in frequenza
In questa sezione ci occupiamo del calcolo della risposta in frequenza di un
sistema LTI causale discreto.
Esempio 28. Consideriamo il sistema LTI dellEsempio 26. Vogliamo cal-
colare la risposta in frequenza per i due casi considerati. Stampare modulo
e fase delle risposte in frequenza.
1 %%%%%%%%%%%%
2 % es28.m %
3 %%%%%%%%%%%%
4
5 clear all
74 CAPITOLO 5. SISTEMI LTI DISCRETI
6 close all
7 clc
8 m=0.8;
9
10 % Primo valore di t
11 t=0.4;
12
13 % Secondo valore di t
14 % t=1;
15
16 % calcolo della risposta impulsiva
17 u=[0 0 1 zeros (1 ,60)]; %ingresso delta(n)
18 h(1)=0; % condizioni iniziali
19 h(2)=0;
20 for k=3:63
21 h(k)=m*h(k-1)-t*h(k-2)+u(k);
22 end
23 h=h(3: end); %risposta impulsiva dall istante 0
24 % risposta in frequenza
25 n=0:60;
26 Theta =0.01; %trasformata di Fourier
27 theta=-pi:Theta:pi;
28 H=zeros(1,length(theta ));
29 for k=1: length(n)
30 H=H+h(k)*exp(-1i*theta*n(k));
31 end
32 %stampa modulo risposta in frequenza
33 figure
34 plot(theta ,abs(H))
35 xlabel(theta )
36 ylabel(|H|)
37 grid
38 %stampa fase risposta in frequenza
39 figure
40 plot(theta ,phase(H))
41 grid
42 xlabel(theta )
43 ylabel(fase di H)
5.4. AUTOFUNZIONI DEI FILTRI 75
Esercizio 20. Si consideri il sistema dellEsercizio 18. Stampare modulo e
fase della risposta in frequenza H(e
i
).
5.4 Autofunzioni dei ltri
Consideriamo un sistema LTI causale BIBO-stabile con risposta impulsiva
h(n):
x(n) = h u(n). (5.12)
Se u(n) = sin(
0
n) e h(n) `e a valori reali, allora, dopo un transitorio iniziale,
x(n) = |H(e
j
0
)| sin(
0
n + arg[H(e
j
0
)]). (5.13)
Osservazione 5.1. Dal punto di vista applicativo, questa propriet`a permet-
te di ricostruire empiricamente la risposta in frequenza di un sistema LTI
stabile, mediante luso di segnali di ingresso sinusoidali con frequenze diverse.
Esempio 29. Consideriamo il sistema (5.6) con m = 0.6 e t = 0.2. Alimen-
tiamo il sistema con la sinusoide di ampiezza unitaria e
0
= 1
u(n) = sin(
0
n), n 0. (5.14)
Stampare i tre seguenti graci:
1. u(n) e x(n) (scegliamo 0 n 600)
2. |U(e
j
)| e |X(e
j
)|
3. |H(e
j
)|
Vericare dai graci che
|H(e
j
0
)|
|X(e
j
0
)|
|U(e
j
0
)|
. (5.15)
1 %%%%%%%%%%%%
2 % es29.m %
3 %%%%%%%%%%%%
4
5 clear all
76 CAPITOLO 5. SISTEMI LTI DISCRETI
6 close all
7 clc
8 m=0.6;
9 t=0.2;
10 n=0:600;
11 % segnale di ingresso u
12 theta0 =1;
13 u=sin(theta0*n);
14 Theta =0.01; %trasformata di Fourier
15 theta=-pi:Theta:pi;
16 U=zeros(1,length(theta ));
17 for k=1: length(n)
18 U=U+u(k)*exp(-1i*theta*n(k));
19 end
20
21 %risposta impulsiva
22 d=[0 0 1 zeros (1 ,600)]; %ingresso delta(n)
23 h(1)=0; % condizioni iniziali
24 h(2)=0;
25 for k=3:n(end )+3
26 h(k)=m*h(k-1)-t*h(k-2)+d(k);
27 end
28 h=h(3: end); % risposta impulsiva dall istante 0
29 %calcolo della risposta alla sinusoide u
30 x=conv(u,h);
31 Theta =0.01; %trasformata di Fourier
32 theta=-pi:Theta:pi;
33 X=zeros(1,length(theta ));
34 for k=1: length(n)
35 X=X+x(k)*exp(-1i*theta*n(k));
36 end
37
38 % risposta in frequenza
39 Theta =0.01; %trasformata di Fourier
40 theta=-pi:Theta:pi;
41 H=zeros(1,length(theta ));
42 for k=1: length(n)
43 H=H+h(k)*exp(-1i*theta*n(k));
5.4. AUTOFUNZIONI DEI FILTRI 77
44 end
45
46 % grafici di x e u
47 figure
48 stem(n,x(1: length(n)),r)
49 hold on
50 stem(n,u,b)
51 xlabel(n)
52 legend(x,u)
53
54 % grafici |X| e |U|
55 figure
56 plot(theta ,abs(X),r)
57 hold on
58 plot(theta ,abs(U),b)
59 xlabel(theta )
60 legend(|X|,|U|)
61
62 % grafico |X| vs |H||U|
63 figure
64 plot(theta ,abs(H).* abs(U),r --,LineWidth ,2)
65 hold on
66 plot(theta ,abs(X),b)
67 xlabel(theta )
68 legend(|X|, |H||U|)
Esercizio 21. Consideriamo lEsempio 29. Stampare la fase di H(e
j
) e cal-
colare arg[H(e
j
0
)]. Vericare poi che nel primo graco x e u sono sfasate
tra loro di tale quantit` a.
Suggerimento: stampare sul primo graco il segnale continuo u(t) = sin(
0
t), t
0....
78 CAPITOLO 5. SISTEMI LTI DISCRETI
Capitolo 6
Sistemi LTI continui
In questa sezione studieremo dei sistemi meccanici attraverso modelli LTI
continui e causali. Preliminarmente richiamiamo alcuni risultati sulla stabi-
lit` a BIBO per questa classe di modelli.
Denizione 6.1 (Stabilit` a BIBO per sistemi discreti). Un sistema LTI
causale continuo del tipo
y(t) = h u(t)
si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) se
e solo se per ogni ingresso limitato u(t) esiste B > 0 tale che |y(t)| B per
ogni t 0.
Dalla teoria sappiamo che
Teorema 6.1 (Condizioni necessarie e sucienti per la BIBO stabilit`a).
Dato il sistema LTI continuo e causale
y(t) = h u(t)
le seguenti condizioni sono equivalenti:
1. Il sistema `e BIBO stabile
2. La risposta impulsiva `e tale che
_
+
0
|h(t)| dt < .
79
80 CAPITOLO 6. SISTEMI LTI CONTINUI
Inne, la funzione di trasferimento H(s) sia razionale ed in forma minima,
priva cio`e di poli e zeri coincidenti. Allora, esprimendo il sistema nella forma
in spazio di stato
_
d
dt
x(t) = Ax(t) + Bu(t)
y(t) = Cx(t) + Du(t)
, (6.1)
in cui H(s) = C(sI A)
1
B+D, possiamo introdurre unulteriore condizione
necessaria e suciente per la stabilit`a BIBO.
Teorema 6.2. Il sistema in forma minima (6.1) `e BIBO stabile se e solo se
gli autovalori di A sono tutti a parte reale negativa.
6.1 Equazioni dierenziali in Matlab
Consideriamo lequazione dierenziale del secondo ordine a parametri costan-
ti
a
d
2
dt
2
y(t) + b
1
d
dt
y(t) + b
0
y(t) = u(t) (6.2)
dove a = 0 e u(t) noto. Poniamo
v
1
(t) = y(t), v
2
(t) =
d
dt
y(t) (6.3)
quindi (6.2) diventa
_
d
dt
v
1
(t) = v
2
(t)
d
dt
v
2
(t) =
b
1
a
v
2
(t)
b
0
a
v
1
(t) +
1
a
u(t)
. (6.4)
Esprimendo (6.4) in forma vettoriale
_
d
dt
v
1
(t)
d
dt
v
2
(t)
_
=
_
0 1

b
0
a

b
1
a
__
v
1
(t)
v
2
(t)
_
+
_
0
1
a
_
u(t). (6.5)
Inne, denendo
v(t) =
_
v
1
(t)
v
2
(t)
_
(6.6)
e
A =
_
0 1

b
0
a

b
1
a
_
, B =
_
0
1
a
_
, C =
_
1 0
_
, D = 0 (6.7)
6.2. STUDIODI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI81
otteniamo il sistema
_
d
dt
v(t) = Av(t) + Bu(t)
y(t) = Cv(t) + Du(t)
.
Osserviamo che la (6.8) `e una forma equivalente di (6.2). Perci` o, le matrici
A, B, C, D descrivono in maniera univoca lequazione dierenziale (6.2).
Osservazione 6.1. Per lequazione dierenziale del primo ordine
a
d
dt
y(t) + b
0
y(t) = u(t), a = 0 (6.8)
abbiamo v(t) = y(t), A =
b
0
a
, B =
1
a
, C = 1, D = 0.
Esercizio 22. Si consideri lequazione dierenziale di ordine n descritta da
a
d
n
dt
n
y(t) +
n1

k=0
b
k
d
k
dt
k
y(t) = cu(t), a = 0. (6.9)
Vericare che le corrispondenti matrici sono
A =
_
_
_
_
_
0 1 0 . . .
.
.
.
.
.
.
0 1

b
0
a
. . . . . .
b
n1
a
_
_
_
_
_
, B =
_
_
_
_
_
0
.
.
.
.
.
.
1
a
_
_
_
_
_
, C =
_
0 . . . 0 1
_
, D = 0.
(6.10)
In Matlab, per calcolare la soluzione ai valori iniziali y(t) utilizziamo la
funzione lsim. I parametri di ingresso sono: A,B,C,D, il vettore dei tempi t,
lingresso u e il vettore delle condizioni iniziali
_
y(0)
d
dt
y(0)
_
T
. Nel seguito
vedremo in dettaglio lutilizzo di tale funzione con degli esempi.
6.2 Studio di sistemi meccanici tramite mo-
delli LTI continui
In questa sezione prendiamo in esame lequazione dierenziale che descrive
la dinamica di un oscillatore armonico costituito da una molla di costante
elastica k collegata ad una massa m, Figura 6.1. Sia y(t) la posizione di
82 CAPITOLO 6. SISTEMI LTI CONTINUI
k
y(t)
u(t)
M
Figura 6.1: Modello molla-massa.
un pressato punto delloscillatore allistante t. Il secondo principio della
dinamica ci dice che, per un corpo a massa m costante,
F = ma
in cui F indica la risultante delle forze agenti sul punto materiale ed a :=
d
2
dt
y(t) `e laccelerazione risultante. Quindi, se ad esso non `e applicata alcuna
forza esterna, il moto delloscillatore `e descritto dalla seguente equazione
dierenziale
m
d
2
dt
2
y(t) = ky(t). (6.11)
Esempio 30. Si consideri un oscillatore armonico con m = 0.1Kg e k =
1.6
N
m
. Supponendo che il punto pressato delloscillatore sia a 10m dalla
posizione di riposo (y(0) = 10,
d
dt
y(0) = 0), calcolare la dinamica di tale
punto dallistante 0 a 10.
In questo caso
A =
_
0 1

k
m
0
_
, B =
_
0
1
m
_
, C =
_
1 0
_
, D = 0 (6.12)
e u(t) = 0 in quanto loscillatore non `e soggetto a nessuna forza.
1 %% Oscillatore armonico
2
3 close all
4 clear all
5 clc
6
6.2. STUDIODI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI83
7 m=0.1;
8 k=1.6;
9 T=0.01;
10 t=0:T:10; % vettore dei tempi
11
12 % definizione matrici
13 A = [0 1; -k/m 0];
14 B = [0;1/m];
15 C = [1 0];
16 D = 0;
17 % ingresso nullo
18 u=zeros(1,length(t));
19 % condizioni iniziali
20 v0 =[10; 0];
21
22 % calcolo dell uscita
23 y = lsim(A,B,C,D,u,t,v0);
24 figure
25 plot(t,y)
26 xlabel(Tempo )
27 ylabel(y(t))
28 title(Oscillatore armonico )
Esercizio 23. Ripetere lEsempio 30 supponendo che la posizione iniziale del
punto pressato sia 20m. Che cosa si pu` o concludere da questi due esempi?
Ora supponiamo che sia presente lattrito viscoso . Lequazione dello-
scillatore armonico smorzato `e
m
d
2
dt
2
y(t) =
d
dt
y(t) ky(t). (6.13)
Esempio 31. Si consideri un oscillatore armonico smorzato. Supponendo
che il punto pressato delloscillatore sia a 10m dalla posizione di riposo
(y(0) = 10,
d
dt
y(0) = 0), calcolare la dinamica di tale punto dallistante 0 a
10 per i due seguenti casi:
m = 0.1Kg, = 0.1
Kg
s
, k = 1.6
N
m
.
m = 0.1Kg, = 0.9
Kg
s
, k = 1.6
N
m
.
84 CAPITOLO 6. SISTEMI LTI CONTINUI
Cosa dierenzia i due casi precedenti?
In questo caso
A =
_
0 1

k
m

m
_
, B =
_
0
1
m
_
, C =
_
1 0
_
, D = 0 (6.14)
e u(t) = 0 in quanto loscillatore non `e soggetto a nessuna forza.
1 %% Oscillatore smorzato
2
3 close all
4 clear all
5 clc
6 m=0.1;
7 k=1.6;
8 lambda =0.1;
9 %lambda =0.9;
10 v0 =[10; 0]; % condizioni iniziali
11 T=0.01; % vettore dei tempi
12 t=0:T:10;
13 u=zeros(1,length(t)); % ingresso nullo
14 A=[0 1; -k/m -lambda/m];% definizione matrici
15 B=[0; 1/m];
16 C=[1 0];
17 D=0;
18 disp(Autovalori:)
19 eig(A)
20 y=lsim(A,B,C,D,u,t,v0); % dinamica modello
21 figure
22 plot(t,y)
23 grid
24 xlabel(Tempo )
25 ylabel(y(t))
26 title ([Oscillatore armonico smorzato con \lambda = ,...
27 num2str(lambda )])
Esercizio 24. Ripetere lEsempio 31 supponendo che la posizione iniziale del
punto pressato sia 20m. Che cosa si pu` o concludere da questi due esempi?
6.2. STUDIODI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI85
Ora supponiamo che sulloscillatore agisca una forza costante dovuta alla
presenza della gravit` a. In questo caso lequazione delloscillatore armonico
diventa
m
d
2
dt
2
y(t) =
d
dt
y(t) ky(t) + mg. (6.15)
Esempio 32. Si consideri un modello molla-massa verticale in cui ce la
presenza della forza di gravit` a. Sia m = 0.1Kg, = 0.1
Kg
s
, k = 1.6
N
m
.
Supponendo che il punto pressato delloscillatore sia a 10m dalla posizione di
riposo (y(0) = 10,
d
dt
y(0) = 0), calcolare la dinamica di tale punto dallistante
0 a 20.
In questo caso
A =
_
0 1

k
m

m
_
, B =
_
0
1
m
_
, C =
_
1 0
_
, D = 0. (6.16)
1 %% Oscillatore smorzato sottoposto alla forza di gravit`a
2
3 close all
4 clear all
5 clc
6
7 m=0.1;
8 k=1.6;
9 lambda =0.1;
10 g=9.8;
11 v0 =[10; 0]; % condizioni iniziali
12 T=0.01; % vettori dei tempi
13 t=0:T:20;
14 u=m*g*ones(1,length(t)); % ingresso
15 A=[0 1; -k/m -lambda/m];% definizione matrici
16 B=[0;1/m];
17 C=[1 0];
18 D=0;
19 y=lsim(A,B,C,D,u,t,v0); % dinamica modello
20 figure
21 plot(t,y)
22 grid
23 xlabel(Tempo )
86 CAPITOLO 6. SISTEMI LTI CONTINUI
24 ylabel(y(t))
25 title ([Oscillatore armonico smorzato con \lambda = ,...
26 num2str(lambda )])
Esercizio 25. Ripetere lEsempio 32 con = 0.9
Kg
s
. Perch`e la dinamica
cambia in maniera rilevante?
Esempio 33. Consideriamo il modello
m
d
2
dt
2
y(t) =
d
dt
y(t) ky(t) + x(t). (6.17)
con m = 0.1Kg, = 0.1
Kg
s
, k = 1.6
N
m
. Supponiamo che alloscillatore sia
applicata una forza sinusoidale:
x(t) = F
0
sin( t), F
0
= 5N. (6.18)
Stampare x(t) e la dinamica delloscillatore dallistante 0 a 20 partendo da
condizioni iniziali nulle per = 2, = 4 e = 7.
1 %% Oscillatore smorzato con ingresso sinusoidale
2
3 close all
4 clear all
5 clc
6
7 m=0.1;
8 k=1.6;
9 lambda =0.1;
10 v0=[0; 0];
11 T=0.01; % vettore dei tempi
12 t=0:T:20;
13 A=[0 1; -k/m -lambda/m];% definizione matrici
14 B=[0;1/m];
15 C=[1 0];
16 D=0;
17 F0=5; % segnale di ingresso x
18 omg =2;
19 % omg =4;
20 % omg =7;
6.3. ACCENNI ALLUSO DI SIMULINK 87
21 u=F0*sin(omg*t);
22 y=lsim(A,B,C,D,u,t,v0); % dinamica modello
23 figure
24 plot(t,u)
25 hold on
26 plot(t,y,r)
27 legend(x,y)
28 grid on
29 xlabel(Tempo )
30 title ([Oscillatore armonico smorzato con \lambda = ,...
31 num2str(lambda), ed ingresso sinusoidale ])
Esercizio 26. Ripetere lEsempio 33 supponendo che loscillatore smorzato
allistante t = 0 sia a 10m dalla posizione di riposo.
6.3 Accenni alluso di Simulink
Simulink `e uno strumento oerto da Matlab per modellare e simulare sistemi.
Questo pacchetto software si compone di una serie di librerie che forniscono i
blocchi elementari che, opportunamente interconnessi, andranno a realizzare
lo schema a blocchi del sistema di interesse.
Per avviare Simulink dobbiamo agire sul quartultimo tasto della barra
dei comandi di Figura 2.2. Alternativamente, `e suciente digitare simulink
nella Command Window. Apparir` a la nestra di Figura 6.2. Nella parte
sinistra vediamo la lista delle librerie (ognuna delle quali contiene una certa
tipologia di componenti base), a destra invece ci sono i diversi componenti che
costituiscono la libreria selezionata. Per aprire un nuovo foglio di lavoro dove
creare il proprio schema `e suciente premere il primo pulsante sulla barra
dei tasti di Figura 6.2 e apparir` a la nestra di Figura 6.3 dove possiamo tra-
scinare dalla libreria i componenti che ci servono. I collegamenti tra i diversi
blocchi vengono eettuati cliccando sul blocco di partenza e poi cliccando
sul blocco di arrivo del collegamento premuto il tasto Ctrl. Facendo doppio
click sui blocchi possiamo impostarne i parametri. Il passo successivo `e quel-
lo di impostare i parametri della simulazione. Tali parametri si impostano
selezionando la voce conguration parameter dal men` u simulation. Apparir` a
la nestra di Figura 6.4 dove si deve impostare listante iniziale (star time)
88 CAPITOLO 6. SISTEMI LTI CONTINUI
Figura 6.2: Libreria di Simulink
Figura 6.3: Foglio di lavoro di Simulink
6.3. ACCENNI ALLUSO DI SIMULINK 89
Figura 6.4: Finestra per impostare i parametri della simulazione
e nale (stop time). Nel Solver options-Type scegliere Fixed-step. Ora basta
far partire la simulazione agendo sul pulsante Start simulation (Figura 6.3).
Riportiamo a titolo desempio un modello che permette di simulare gli
oscillatori analizzati nella precedente sezione. Per denire i parametri utiliz-
ziamo lo script oscillatori parametri.m (che richiede la presenza del le
Simulink oscillatori.mdl nella stessa cartella).
1 %% Modello simulink per loscillatore
2 % definizione di parametri
3
4 % Parametri del modello
5 m=0.1;
6 k=1.6;
7 lambda =0.1;
8
9 % Matrici del sistema
10 A=[0 1; -k/m -lambda/m];% definizione matrici
11 B=[0;1/m];
12 C=[1 0];
13 D=0;
90 CAPITOLO 6. SISTEMI LTI CONTINUI
14
15 % Condizioni iniziali
16 v0 =[10; 0];
17
18 % Parametri dei segnali di ingresso
19 g = 9.8;
20 F0 = 5;
21 omg = 2;
22
23 open oscillatori
Il modello Simulink `e rappresentato in Fig. 6.5.
u(t)
y(t)
To Workspace
y
State-Space
x' = Ax+Bu
y = Cx+Du
Scope
Manual Switch1
Manual Switch
F = mg
m*g
F = F0*sin(omg*t)
F = 0
0
Figura 6.5: Modello Simulink per gli oscillatori