laboratorio matlab di segnali e sistemi -...
TRANSCRIPT
Laboratorio Matlabdi Segnali e Sistemi
Mattia Zorzicon la collaborazione di
Francesco Guidolin e Chiara Masiero
14 aprile 2014
2
Indice
1 Introduzione 5
2 Funzionalita basilari di Matlab 72.1 Come si presenta Matlab . . . . . . . . . . . . . . . . . . . . . 72.2 Command Window . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Definizione di oggetti . . . . . . . . . . . . . . . . . . . 92.2.2 Operazioni di base sui vettori . . . . . . . . . . . . . . 122.2.3 Operazioni di base sulle matrici . . . . . . . . . . . . . 152.2.4 Funzioni Matlab . . . . . . . . . . . . . . . . . . . . . 192.2.5 Altre istruzioni matlab . . . . . . . . . . . . . . . . . . 23
2.3 Gestione delle variabili . . . . . . . . . . . . . . . . . . . . . . 232.4 m-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.5 Strutture di controllo . . . . . . . . . . . . . . . . . . . . . . . 262.6 Grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 Segnali e convoluzioni 333.1 Segnali pari e dispari, segnali complessi . . . . . . . . . . . . . 333.2 Area ed energia di un segnale . . . . . . . . . . . . . . . . . . 343.3 Convoluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 Analisi di Fourier 514.1 Serie di Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2 Trasformata di Fourier per segnali a tempo continuo . . . . . . 564.3 Trasformata di Fourier per segnali a tempo discreto . . . . . . 614.4 Campionamento e aliasing . . . . . . . . . . . . . . . . . . . . 65
3
4 INDICE
5 Sistemi LTI discreti 695.1 Introduzione ai sistemi LTI discreti . . . . . . . . . . . . . . . 695.2 Risposta impulsiva . . . . . . . . . . . . . . . . . . . . . . . . 745.3 Risposta in frequenza . . . . . . . . . . . . . . . . . . . . . . . 775.4 Autofunzioni dei filtri . . . . . . . . . . . . . . . . . . . . . . . 79
6 Sistemi LTI continui 836.1 Equazioni differenziali in Matlab . . . . . . . . . . . . . . . . . 846.2 Studio di sistemi meccanici tramite modelli LTI continui . . . 856.3 Accenni all’uso di Simulink . . . . . . . . . . . . . . . . . . . . 91
Capitolo 1Introduzione
Questa dispensa contiene il materiale fornito agli studenti per il laboratoriodel corso di Segnali e Sistemi per ingegneria dell’Informazione svolto all’uni-versita di Padova nell’a.a. 2011/2012. L’obiettivo principale del laboratorioe fornire una certa familiarita con lo strumento di calcolo Matlab, il qualee ampiamente usato in contesti ingegneristici e applicativi. L’obbiettivo se-condario, ma non per questo meno importante, e permettere agli studenti diassimilare meglio i concetti fondamentali riguardanti la teoria dei segnali edei sistemi visti a lezione.
Il termine Matlab deriva dall’abbreviazione di MATrix LABoratory. Fucreato alla fine degli anni ’70 da Cleve Moler, il presidente del dipartimento discienze informatiche dell’Universita del Nuovo Messico. Egli creo Matlab perdare ai suoi studenti accesso alle librerie linpack e ad eispack senza che essidovessero conoscere il Fortran. Presto si diffuse nelle altre Universita e trovoun grande pubblico tra la comunita dei matematici applicati. Jack Little, uningegnere, conobbe il programma durante una visita a Moler all’Universitadi Stanford nel 1983. Riconoscendo il suo potenziale commerciale, si unıcon Moler e Steve Bangert. Essi riscrissero Matlab in C e fondarono la TheMathWorks nel 1984 per continuare il suo sviluppo.
Matlab percio e un ambiente per il calcolo numerico e l’analisi statisticache comprende anche l’omonimo linguaggio di programmazione creato dal-la MathWorks. Questo software funziona su diversi sistemi operativi, tracui Windows, Mac OS, GNU/Linux e Unix. Attualmente in commercio edisponibile la versione R2012a.
Infine 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 2Funzionalita 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. FUNZIONALITA BASILARI DI MATLAB
• Command Window e la sotto-finestra in cui vengono trasmesse le istru-zioni desiderate a Matlab
• WorkSpace visualizza le variabili attualmente create dalle istruzionifornite.
• La cartella di lavoro e la sotto-finestra che visualizza tutti i file contenutinella cartella in cui ha accesso Matlab.
In Figura 2.2 e mostrata la barra dei pulsanti di Matlab. Il primo tastoserve per creare un file Matlab che chiameremo m-file. Il secondo tasto aprela cartella di lavoro. Il quartultimo apre il sottoprogramma Simulink chevedremo in seguito. L’ultimo tasto permette di accedere alla guida in lineadi Matlab. A fianco e possibile selezionare la cartella di lavoro desiderata.
Figura 2.2: Barra dei pulsanti di Matlab
2.2 Command Window
In questa finestra appare un simbolo di attesta seguito da un cursore
>>_
Per fornire una istruzione a Matlab e sufficiente scrivere l’istruzione e premereinvio. Se scriviamo un’istruzione inesistente, Matlab segnala, attraverso unafrase in rosso, che il comando non esiste.
>> fhsj
??? Undefined function or variable ’fhsj ’.
>>
Quando Matlab deve segnalare un errore utilizza sempre il colore rosso, pergli altri messaggi utilizza il nero. I comandi piu semplici e intuitivi riguardanole operazioni di somma, sottrazione, moltiplicazione, divisione ed elevamentoa 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 dell’ultima operazione eseguita. Per nonvisualizzare l’echo di un’istruzione e sufficiente scrivere punto e virgola dopol’istruzione
>> 6.2+2 -3.02^2*3/2;
>>
2.2.1 Definizione di oggetti
• Definizione di una variabile reale
a=3;
• Definizione di un numero complesso
>> z=7+i*9
z =
7.0000 + 9.0000i
>>
Va osservato che i e una variable predefinita come√−1 e in quanto
tale puo essere sovrascritta. E buona norma percio non sovrascriverei. Nota bene: anche j e considerata un’unita immaginaria.
• Definizione della variabile stringa s che contiene la parola ciao
>> s=’ciao ’
10 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
s =
ciao
>>
• Definizione del vettore riga
v =(
1 2 3)
(2.1)
>> v=[1 2 3]
v =
1 2 3
>>
• Definizione del vettore colonna
v =
123
(2.2)
>> v=[1; 2; 3]
v =
1
2
3
>>
Il punto e virgola serve per indicare la fine di una riga.
• Definizione della matrice
A =
(1 2 34 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. FUNZIONALITA BASILARI DI MATLAB
0.4000 0.5000 0.6000
>>
E possibile anche generare un vettore con elementi equispaziati inmaniera descrescente, ad esempio il vettore
v =(
0 −0.1 −0.2 −0.3 −0.4 −0.5 −0.6)
(2.6)
si genera con il comando
>> v=0: -0.1: -0.6
v =
Columns 1 through 4
0 -0.1000 -0.2000 -0.3000
Columns 5 through 7
-0.4000 -0.5000 -0.6000
>>
2.2.2 Operazioni di base sui vettori
• Somma tra due vettori
u =
(12
), v =
(34
)(2.7)
>> u=[1; 2];
>> v=[3; 4];
>> w=u+v
w =
2.2. COMMAND WINDOW 13
4
6
>>
• Calcolo del prodotto interno < u, v >= uTv
>> u’*v
ans =
11
>>
• Prodotto tra i vettori u e v componente per componente
>> v.*u
ans =
3
8
>>
Esiste anche l’analogo per la divisione (./) e l’elevamento a potenza (. ).
• Trasposizione del vettore u (solo nel caso in cui u e definito nel camporeale)
>> u’
ans =
1 2
>>
14 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
NOTA: In generale il comando u’ calcola il trasposto del complessoconiugato del vettore u. Nel campo complesso (ma anche reale) lasemplice trasposizione si ottiene con u.’ (con il punto).
• Selezione dell’elemento j-esimo del vettore
v =(
3 4 5 6)T
(2.8)
>> 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.9)
secondo gli indici di posizione j, k
>> 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 sufficiente immettere suoi
2.2. COMMAND WINDOW 15
coefficienti in un vettore, che chiameremo p, in ordine decrescente. Peresempio, consideriamo
x5 + 10x4 + 0.6x3 + 12x2 − 7x+ 5 (2.10)
>> 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 Operazioni di base sulle matrici
• Somma tra le due matrici
A =
(1 23 4
), B =
(5 67 8
)(2.11)
>> A=[1 2; 3 4];
>> B=[5 6; 7 8];
>> C=B+A
C =
6 8
10 12
>>
• Prodotto tra le matrici A e B
16 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>> D=A*B
D =
19 22
43 50
>>
• Elevamento alla potenza p della matrice A
>> p=2;
>> A^p
ans =
7 10
15 22
>>
Prodotto tra le matrici A e B componente per componente
>> A.*B
ans =
5 12
21 32
>>
Esiste anche l’analogo per la divisione (./) e l’elevamento a potenza (. ).
• Trasposizione della matrice A (solo nel campo reale, vedi la nota sopra)
>> A’
ans =
2.2. COMMAND WINDOW 17
1 3
2 4
>>
• Accostamento delle matrici A e B
C =(A B
)(2.12)
>> C=[A B]
C =
1 2 5 6
3 4 7 8
>>
• Incolonnamento delle matrici A e B
C =
(AB
)(2.13)
>> C=[A; B]
C =
1 2
3 4
5 6
7 8
>>
• Selezione dell’elemento alla riga j e colonna k di
A =
1 2 3 45 6 7 89 10 11 12
(2.14)
18 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12];
>> j=2;
>> k=4;
>> A(j,k)
ans =
8
>>
• Selezione della riga j di A
>> A(j,:)
ans =
5 6 7 8
>>
• Selezione della colonna k di A
>> A(:,k)
ans =
4
8
12
>>
• Matrice inversa di A
>> inv(A)
ans =
2.2. COMMAND WINDOW 19
-2.0000 1.0000
1.5000 -0.5000
>>
• Autovalori di A
>> eig(A)
ans =
-0.3723
5.3723
>>
2.2.4 Funzioni Matlab
Matlab fornisce molte funzioni all’utente. L’argomento delle funzioni, sepresente, e compreso tra parentesi tonde.
Esempio 1. Vogliamo valutare la seguente funzione polinomiale per x = 2
p(x) = x5 − 7x+ 5. (2.15)
In questo caso basta utilizzare la funzione polyval con argomenti di ingressoil 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
20 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>> p=[1 0 0 0 -7 5];
>> polyval(p,2)
ans =
23
>>
Per avere informazioni su una funzione Matlab e sufficiente scrivere helpseguito 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
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.
2.2. COMMAND WINDOW 21
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
x5 − 7x+ 5. (2.16)
La funzione Matlab che dobbiamo utilizzare e roots. Il parametro d’ingressoe il polinomio e il parametro di uscita e un vettore contente le radici delpolinomio.
>> p=[1 0 0 0 -7 5];
>> roots(p)
ans =
-1.7704
-0.1618 + 1.6671i
-0.1618 - 1.6671i
1.3464
0.7477
22 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>>
Riportiamo alcune funzioni Matlab di interesse.
Funzioni costantiFunzione Descrizionepi π
exp(1) numero di Nepero
eps Precisione di Matlab
Funzioni per numeri realiFunzione Descrizioneround(x) Restituisce l’approssimazione 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 l’arcoseno di x
acos(x) Restituisce l’arcocoseno di x
atan(x) Restituisce l’arcotangente di x
log(x) Restituisce il logaritmo di x
log10(x) Restituisce il logaritmo in base dieci di x
Funzioni per numeri complessiFunzione Descrizionereal(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 ez
2.3. GESTIONE DELLE VARIABILI 23
Funzioni per vettori e matriciFunzione Descrizionelength(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 dell’elemento piu piccolo di v
max(v) Restituisce il valore e la posizione dell’elemento piu 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.5 Altre istruzioni matlab
Istruzione Descrizionedisp(s) Visualizza l’oggetto s nel Command Window
clc Pulisce la finestra Command Window
num2str(x) Restituisce la variabile stringa che corrisponde alla variabile reale/complessa x
pause Arresta l’inserimento di istruzioni nel Command Window, l’effetto termina premendo INVIO
% Simbolo per i commenti
2.3 Gestione delle variabili
Ogni variabile definita nel Command Window viene memorizzata nel Work-Space. L’istruzione whos permette la visualizzazione delle variabili del Work-Space
>> whos
Name Size Bytes Class Attributes
A 2x4 64 double
ans 1x1 8 double
v 1x7 56 double
>>
L’istruzione clear permette la cancellazione di una o tutte le variabili delWorkSpace
24 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>> 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 all’istruzione save seguita dalnome del file su cui verranno salvate
>> save risultati
>>
dopo questa istruzione Matlab crea il file risultati.mat nella cartella di la-voro. In questa maniera possiamo uscire dall’ambiente Matlab senza perderei nostri dati. Per ricaricare tutte le variabili salvate nel file .mat si utilizza ilcomando load
>> load risultati
>>
2.4 m-files
Finora abbiamo visto come sia possibile utilizzare Matlab tramite la riga dicomando. Puo succedere pero che si vogliano scrivere veri e propri program-mi, cioe una successione di comandi da eseguire uno dopo l’altro in un ordinefissato. In tal caso la successione di comandi deve essere memorizzata in un
2.4. M-FILES 25
file chiamato m-file. Per creare un m-file e sufficiente selezionare il primo ta-sto della barra dei pulsanti di Matlab, Figura 2.2. Si aprira un editor, Figura2.3, dove e possibile scrivere la sequenza di istruzioni. Terminata questa fase
Figura 2.3: Editor per gli m-file.
dobbiamo salvare il lavoro. Supponiamo di chiamarlo prova, allora Matlabcreera un file prova.m nella cartella di lavoro. Infine per eseguire la squenzadi istruzioni salvate in prova.m e sufficiente scrivere il nome del file, senzaestensione, nel Command Window
>>prova
>>
Esempio 3. Vogliamo scrivere il programma es3.m che calcola la media ela deviazione standard del vettore
x =(
1 2 3 4)T. (2.17)
1 %%%%%%%%%%%
2 % es3.m %
3 %%%%%%%%%%%
4
5 clear all % cancello il vecchio WorkSpace
6 clc% pulisci lo schermo
7 x=[1 2 3 4];
26 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
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.18)
nel file 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 dell’esercizio precedente, calcolare uTv
1 %%%%%%%%%%%
2 % es5.m %
3 %%%%%%%%%%%
4
5 clear all %cancello tutte le variabili WorkSpace
6 load dati %carico il vecchio WorkSpace
7 u’*v
2.5 Strutture di controllo
Oltre agli operatori aritmetici esistono gli operatori relazionali <, >, ==, <=,>=, ~= che corrispondono ai simboli matematici <,>,=,≤,≥, 6=. Mediante
2.5. STRUTTURE DI CONTROLLO 27
questi operatori si possono scrivere delle relazioni che possono essere vere ofalse. Il valore vero viene indicato da Matlab con 1, mentre il valore falsoviene 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). Testareil programma con i seguenti polinomi
p(x) = x3 + 1
q(x) = x2 + 7x− 3. (2.19)
1 %%%%%%%%%%%
2 % es6.m %
3 %%%%%%%%%%%
4
5 clear all
6 clc %pulisci lo schermo
7 p=[1 0 0 1]; %polinomi da sommare
28 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
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 il quadrato dei primi diecinumeri interi. Fare in modo che ogni numero venga stampato dopo chel’utente 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 dell’Esempio 7 utilizzando il con-trollo while.
1 %%%%%%%%%%%
2 % es8.m %
3 %%%%%%%%%%%
2.6. GRAFICI 29
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 Grafici
Matlab fornisce anche funzioni grafiche. Consideriamo un segnale definito suun dominio D ⊂ R
y = f(t), t ∈ D. (2.20)
Per disegnare tale segnale su carta:
• prendiamo un numero finito di punti t1, . . . tn contenuti in D, equispa-ziati secondo una prescelta quantita T
• calcoliamo i corrispondenti y1, . . . yn con yi = f(ti)
• disegniamo i punti sul piano cartesiano e infine li uniamo secondo unopportuno criterio.
Detto in maniera piu formale: campioniamo il segnale con passo di campio-namento pari a T e poi lo interpoliamo linearmente. Il concetto e lo stessoper stampare in Matlab tale segnale. Consideriamo il vettore
t =(t1 . . . tn
)T, ti ∈ D, (2.21)
calcoliamoy =
(f(t1) . . . f(tn)
)T. (2.22)
Infine utilizziamo la funzione plot passandole i vettori t e y.
Esempio 9. Stampare il segnale
f(t) = sin
(2π
5t− 0.1
), t ∈ [0, 10] (2.23)
con passo di campionamento pari a T = 0.02.
30 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
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 grafico di Figura 2.4. Matlab oltre alla
Figura 2.4: Grafico dell’Esempio 9
figura fornisce una serie utility grafiche: salva figura, zoom grafico, esploragrafico, datatip. Osserviamo che in questo m-file ci sono delle nuove funzionidi Matlab. Nella seguente tabella ne riportiamo la descrizione.
2.6. GRAFICI 31
Funzione Descrizionefigure Apre una nuova finestra per stampare grafici
close all Chiude tutte le finestre dei grafici aperte
grid on Mostra la griglia nel grafico
grid off Non mostra la griglia nel grafico (default)
xlabel(s) Chiama l’asse x con la variabile stringa s
ylabel(s) Chiama l’asse y con la variabile stringa s
legend() Istruzione per la legenda del grafico
title(s) Intitola il grafico usando la variabile stringa s
axis([x1 x2,y1 y3]) Imposta gli assi del grafico secondo (x1, x2) e (y1, y2)
hold on Permette di sovrapporre piu grafici nella stessa finestra
hold off Permette di stampare solo un grafico nella finestra (default)
plot Istruzione per stampare segnali a tempo continuo
stem Istruzione per stampare segnali a tempo discreto
Esercizio 1. Consideriamo il segnale dell’Esempio 9. Ripetere l’esempio conT = 0.8 e T = 2. Commentare i grafici trovati.
Esercizio 2. Stampare il segnale
f(t) = e−0.01t sin(0.4t), t ∈ [0, 100]. (2.24)
Scegliere in maniera opportuna il passo di campionamento.
Esempio 10. Stampare su due figure differenti i segnali
f(t) = cos(2t), t ∈ [0, 50]
g(t) = e−0.1t cos(2t), t ∈ [0, 50] (2.25)
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
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
32 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
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 piu compattae veloce per creare il vettore y. La funzione cos accetta come parametro diingresso anche un vettore e restituisce il corrispondente vettore y. Vale lastessa cosa per exp e tutte le altre funzioni analoghe di Matlab. Osserviamoche l’istruzione plot prevede un terzo parametro opzionale per specificare ilcolore del segnale: r,b,c,k,g corrispondono a rosso, blu, ciano, nero, verde.
Esercizio 3. Facendo riferimento all’Esempio 10, vedere cosa succede quan-do:
• tolgo la riga quindici
• sostituisco la riga quindici con hold on.
Capitolo 3Segnali e convoluzioni
3.1 Segnali pari e dispari, segnali complessi
Iniziamo ad applicare le funzionalita di Matlab calcolando la parte pari edispari di un segnale.
Esempio 11. Scrivere un programma che stampa il segnale
f(t) = esin(2t), t ∈ [−5, 5], (3.1)
la sua parte pari e dispari (il tutto sullo stesso grafico).
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
33
34 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 grafico 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 pariparte dispari
Figura 3.1: Grafico dell’Esempio 11
Esercizio 4. Stampare la parte reale e immaginaria del segnale complesso
f(t) = ej2π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 l’area e l’energia (e quindi ancheil valore medio e la potenza) di un dato segnale. Iniziamo con i segnali atempo continuo.
3.2. AREA ED ENERGIA DI UN SEGNALE 35
Esempio 12. Scrivere un programma che stampa il segnale
f(t) = sinc(t), t ∈ R (3.3)
e ne calcola l’area.
Chiaramente possiamo solo stampare il segnale su un sotto-intervallo limi-tato di R, per esempio su [−M,M ] con M sufficientemente grande. ScegliamoM = 1000 e T = 0.02. Sapendo che
∫ +∞−∞ sinc(t)dt esiste, e lecito considerare
la seguente approssimazione
∫ ∞−∞
sinc(t)dt 'MT∑
k=−MT
T sinc(kT ), (k ∈ Z). (3.4)
Infine 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 )])
Esempio 13. Scrivere un programma che stampa il segnale periodico (su unperiodo)
f(t) = sin3(t), t ∈ R (3.5)
e ne calcola l’energia.
36 CAPITOLO 3. SEGNALI E CONVOLUZIONI
La periodicita del segnale e Tp = 2π. Sapendo che∫ 2π
0|f(t)|2dt esiste ed
e finito, per calcolare l’energia e lecita l’approssimazione
∫ Tp
0
|f(t)|2dt 'bTpTc∑
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 5. Consideriamo il segnale dell’Esempio 13. Calcolarne l’area, ilvalore medio e la potenza.
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 l’energia.
1 %%%%%%%%%%%%
2 % es14.m %
3.2. AREA ED ENERGIA DI UN SEGNALE 37
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 6. Consideriamo il segnale dell’Esempio 12. Calcolarne il valoremedio, l’energia e la potenza.
Esercizio 7. Consideriamo il segnale dell’Esempio 14. Calcolarne l’area, ilvalore medio e la potenza.
Esempio 15. Consideriamo il segnale periodico a dominio discreto
f(nT ) = sin
(2πnT
Tp
), n ∈ Z (3.8)
con T = 0.05 e TP = 2. Stampare f su un periodo e calcolarne l’area.
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
38 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 grafico 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(nT
)
Figura 3.2: Grafico dell’Esempio 15
Esercizio 8. Consideriamo il segnale dell’Esempio 15. Calcolarne l’energia.
3.3 Convoluzione
In questa sezione introduciamo il calcolo di convoluzioni con Matlab. Persemplicita d’esposizione, considereremo per primo il caso di segnali discretia supporto limitato.
Consideriamo due segnali a(n) e b(n). Sappiamo dalla teoria che la loroconvoluzione e definita come
a ∗ b(n) =+∞∑
k=−∞
b(n− k)a(k). (3.9)
Il codice seguente illustra l’uso del comando conv per il calcolo della convo-luzione. I grafici prodotti, riportati in Figura 3.3 e Figura 3.4, ne illustranoil meccanismo. Il risultato e illustrato in Figura 3.5.
3.3. CONVOLUZIONE 39
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; % supporto di a
11
12 b = [-1 3 -5];
13 x_b = 0:2; % supporto di b
14
15 % Segnale ottenuto ribaltando b
16 b_meno = fliplr(b);
17 x_b_meno = - fliplr(x_b); % supporto di b_meno
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
40 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. Sianodati i segnali rettangolari f(t) e g(t) definiti come
f(t) = Af rect
(t− tfDf
),
g(t) = Agrect
(t− tgDg
).
La convoluzione per segnali continui e definita come
f ∗ g(t) :=
∫ +∞
−∞f(t− τ)g(τ) dτ.
Nel caso di interesse, l’integrale esiste. Quindi, scegliendo un periodo dicampionamento T sufficientemente piccolo, possiamo scrivere
f ∗ g(t) =
∫ +∞
−∞f(t− τ)g(τ) dτ ≈ T
+∞∑k=−∞
f(t− kT )g(kT ).
3.3. CONVOLUZIONE 41
Figura 3.3: Segnali convolvendi a(n) e b(n) (in blu) e versione ribaltata dib(n) (in rosso).
Figura 3.4: Calcolo della convoluzione c(n) := a ∗ b(n)
42 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 qualepossiamo 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 43
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) = A_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) = A_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 axis([-5 5 0 1.4]);
50
51 subplot (132)
52 plot(x,g,’LineWidth ’ ,2);
53 legend(’g’)
54 grid on
55 axis([-5 5 0 1.4]);
56
57 subplot (133)
58 plot(x_g_meno ,g_meno ,’r’,’LineWidth ’ ,2);
59 legend(’g_{-}’)
44 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Figura 3.6: Segnali convolvendi f(t) e g(t) (in blu) e versione ribaltata dig(t) (in rosso)
60 grid on
61 axis([-5 5 0 1.4]);
62
63 %% Convoluzione (approssimazione discreta)
64 % Attenzione a moltiplicare per il passo di campionamento
65 conv_fg = T*conv(f,g);
66 x_conv = -10:T:10;
67 figure , plot(x_conv ,conv_fg ,’b’,’LineWidth ’ ,2)
68 legend(’conv(f,g)’)
69 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 Af = Ag = 1, tf = 2, tg = 3 e Df = 5,Dg = 1.
3.3. CONVOLUZIONE 45
Figura 3.7: Grafico di f ∗ g(t) per Af = Ag = 1, tf = 2, tg = 3 e Df = 5,Dg = 1.
Prendiamo ora in considerazione la risposta y di un sistema lineare (tempoinvariante) ad un ingresso generico x. Dalla teoria sappiamo che y e laconvoluzione tra risposta impulsiva h e l’ingresso x.
Esempio 16. Consideriamo un filtro lineare, causale con risposta impulsiva
h(t) = eαt + eαt, t ≥ 0. (3.10)
Supponiamo di alimentare il filtro con un gradino unitario x all’istante ze-ro. Stampare la risposta impulsiva e la risposta y al gradino unitario per iseguenti 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 stabilita dei sistemi.
Sappiamo che
y(t) =
∫ +∞
−∞h(t− τ)x(τ)dτ =
∫ t
0
h(t− τ)x(τ)dτ. (3.12)
46 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Sotto ipotesi simili a quelle dell’Esempio 12, fissando un T sufficientementepiccolo abbiamo la seguente approssimazione
y(t) ' T
b tTc∑
k=0
h(t− kT )x(kT ). (3.13)
In altre parole possiamo approssimare y come il risultato di una convoluzionediscreta. 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;
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 stabilita vengono lasciati allo studente.
Esercizio 9. Consideriamo un filtro lineare, causale con risposta impulsiva
h(t) = eα1t + eα1t + eα2t + eα2t, t ≥ 0. (3.14)
Supponiamo di alimentare il filtro con un gradino unitario x all’istante ze-ro. Calcolare la risposta impulsiva e la risposta y al gradino unitario per i
3.3. CONVOLUZIONE 47
Figura 3.8: Risposte al gradino unitario del filtro dell’Esempio 16
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 stabilita dei sistemi.
Esempio 17. Consideriamo un filtro lineare discreto, causale con rispostaimpulsiva
h(n) = αn + αn, n ≥ 0. (3.16)
Supponiamo di alimentare il filtro con un gradino unitario discreto x all’i-stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per iseguenti valori di α:
α = 0.8 + j0.4
α = 0.8 + j0.6
α = 0.8 + j0.63. (3.17)
48 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita 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
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 stabilita vengono lasciati allo studente.
Esercizio 10. Consideriamo un filtro lineare discreto, causale con rispostaimpulsiva
h(n) = αn1 + αn1 + αn2 + αn2 , n ≥ 0. (3.19)
Supponiamo di alimentare il filtro con un gradino unitario discreto x all’i-stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per i
3.3. CONVOLUZIONE 49
Figura 3.9: Risposte al gradino unitario del filtro dell’Esempio 17
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.
Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita dei sistemi.
50 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Capitolo 4Analisi di Fourier
In questo capitolo affrontiamo il problema del calcolo delle serie e delletrasformate di Fourier in Matlab.
4.1 Serie di Fourier
In questa sezione parleremo della serie di Fourier. Dato un segnale periodicox(t) di periodo Tp a energia finita sul periodo, possiamo sempre esprimerlocome
x(t) =+∞∑
k=−∞
akej2πkFt (4.1)
dove
ak =1
Tp
∫ Tp
0
x(t)e−j2πkFtdt, F =1
Tp. (4.2)
Esempio 18. Considerare lo sviluppo in serie di Fourier di un’onda quadra
x(t) = A0repTprect
(t
dTp
)(4.3)
con duty cycle d = 0.3, periodo Tp = 2 e ampiezza A0 = 7. Illustrare l’effettoGibbs troncando lo sviluppo a N = 10, 30, 50 armoniche.In questo caso e facile vedere che
ak = A0dsinc(kd). (4.4)
51
52 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 53
0 0.5 1 1.5 2 2.5 3−1
0
1
2
3
4
5
6
7
8
N=10N=30N=50
Figura 4.1: Serie di Fourier troncate dell’Esempio 18
Esempio 19. Consideriamo la serie di Fourier
x(t) = 2+∞∑k=1
(−1)k−1 1
ksin(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
54 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=10N=30N=50
Figura 4.2: Serie di Fourier troncate dell’Esempio 19
In Figura 4.2 sono mostrate le corrispondenti serie troncate.
Esercizio 11. Consideriamo il segnale, periodico di periodo Tp = 2, cosıdefinito per t ∈ [0, 2):
x(t) =
{2(1− t), 0 ≤ t < 12, 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 55
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
56 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=−∞
akejkt (4.7)
dove
ak =
{0, k, pari− 2πk2 , 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 diFourier e definita come
X(f) =
∫ +∞
−∞x(t)e−j2πftdt, f ∈ R (4.9)
Se il precedente integrale esiste ed e finito, allora e lecita la seguente appros-simazione
X(f) ' T
MT∑
k=−MT
x(kT )e−j2πkfT , f ∈ R, (4.10)
dove T e il passo di campionamento e M e un numero sufficientemente eleva-to. Inoltre per rappresentare X(f) dobbiamo anche campionare la frequenza,per cui otteniamo
X(nF ) ' T
MT∑
k=−MT
x(kT )e−j2πknFT , n ∈ Z (4.11)
4.2. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO CONTINUO57
dove F e una quantita sufficientemente piccola.
Proprieta della trasformata di Fourier
Ricordiamo le proprieta fondamentali della trasformata di Fourier nella se-guente tabella.
segnale trasformataLinearita αs1(t) + βs2(t) αS1(f) + βS2(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− t0) S(f)e−j2πft0
Traslazione in frequenza s(t)ej2πft0 S(f − f0)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 Es =∫ +∞−∞ |s(t)|
2dt ES =∫ +∞−∞ |S(f)|2df
Testiamo alcune delle proprieta 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
58 CAPITOLO 4. ANALISI DI FOURIER
15 plot(t,s_1 ,’b’,’LineWidth ’ ,2)
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
4.2. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO CONTINUO59
53 % s_1 = 3*sinc(t)
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
60 CAPITOLO 4. ANALISI DI FOURIER
91 % Trasformata di Fourier di s_2
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
4.3. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO61
14 % segnale
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 l’Esempio 20 con F = 0.01 ed F = 0.1. Qualefenomeno 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 ≤ 2πf ≤ 10 dei seguenti segnali
x1(t) = e−0.5|t|, t ∈ R (4.14)
x2(t) = cos(7t)e−0.5|t|, t ∈ R. (4.15)
Come si differenziano 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)
62 CAPITOLO 4. ANALISI DI FOURIER
La corrispondente trasformata di Fourier e
X(f) = T∞∑
n=−∞
x(nT )e−j2πfnT ' T
MT∑
n=−MT
x(nT )e−j2πfnT , f ∈ R (4.17)
doveM e un numero sufficientemente grande. Anche in questo caso dobbiamocampionare l’insieme delle frequenze
X(kF ) = T
MT∑
n=−MT
x(nT )e−j2πknFT , k ∈ Z (4.18)
dove F e scelto sufficientemente piccolo.
Esempio 21. Stampare la trasformata di Fourier del segnale a dominiodiscreto con T = 1
x(n) =
{1, |n| ≤ 100, |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;
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. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO63
Esercizio 14. Stampare la trasformata di Fourier del segnale a dominiodiscreto con T = 1
x(n) = sinc (3n) , n ∈ Z. (4.20)
Esempio 22. Si consideri il segnale dell’Esempio 21 ed il segnale periodico
y(n) = repNx(n), N = 40. (4.21)
Calcolare i coefficienti di Fourier ak di y(n) e stampare sul grafico dell’Esem-pio 21 il segnale a tempo discreto
k
N7→ Nak. (4.22)
Cosa si puo osservare dal grafico? Ricordare che l’espressione assunta dallatrasformata di Fourier per segnali discreti periodici di periodo Tp = NT e
S(kF ) =N−1∑n=0
Ts(nT )e−j2πknFT , (4.23)
con F = 1Tp
. I coefficienti ak della serie di Fourier corrispondente si ottengono
dalla formula precedente come
ak = FS(kF ) =1
TpS(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)
64 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 l’Esempio 22 ponendo T = 21. Cosa succede? Dareuna spiegazione teorica del risultato trovato.
4.4. CAMPIONAMENTO E ALIASING 65
4.4 Campionamento e aliasing
Ricordiamo brevemente l’enunciato del fondamentale
Teorema 4.1 (Nyquist-Shannon). Sia s(t), t ∈ R, un segnale limitato inbanda, ovvero la cui trasformata di Fourier soddisfa
S(f) = 0 per |f | > B.
Allora, s(t) puo essere ricostruito esattamente a partire dai suoi campionis(nT ), n ∈ Z, presi con frequenza Fc ≥ 2B campioni al secondo. La formulaper la ricostruzione esatta del segnale e:
s(t) =+∞∑
n=−∞
s(nT )sinc [Fc (t− nT )] .
Esempio 23. L’esempio seguente illustra il meccanismo di ricostruzione deisegnali a banda limitata a partire da una loro versione campionata, eviden-ziando come la scelta della frequenza di campionamento sia fondamentaleper evitare l’aliasing.
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’])
66 CAPITOLO 4. ANALISI DI FOURIER
19
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;
4.4. CAMPIONAMENTO E ALIASING 67
57 title(’Segnale ricostruito ’);
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)
68 CAPITOLO 4. ANALISI DI FOURIER
95 Qn=Qn + camp*q(k)*exp(-1i*2*pi*f*t(k));
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 infinita dell’Esercizio 13.Ripetere l’esercizio con T = 0.1, T = 0.5 e T = 1. Motivare, conoscendo labanda del segnale, i risultati trovati.
Capitolo 5Sistemi 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 stabilita BIBO per questa classedi modelli.
Definizione 5.1 (Stabilita BIBO per sistemi discreti). Un sistema LTIcausale discreto del tipo
y(n) = h ∗ u(n)
si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) see solo se per ogni ingresso limitato u(n) esiste B > 0 tale che |y(n)| ≤ B perogni n ≥ 0.
Vale il seguente
Teorema 5.1 (Condizioni necessarie e sufficienti per la BIBO stabilita).Dato il sistema LTI discreto causale
y(n) = h ∗ u(n)
le seguenti condizioni sono equivalenti:
1. Il sistema e BIBO stabile
69
70 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, ovveropriva di cancellazioni. Allora, esprimendo il sistema nella forma in spazio distato {
x(n+ 1) = Ax(n) +Bu(n)
y(n) = Cx(n) +Du(n), (5.1)
in cui H(z) = C(zI−A)−1B+D, possiamo introdurre un’ulteriore condizionenecessaria e sufficiente per la stabilita BIBO:
Teorema 5.2. Il sistema in forma minima (5.1) e BIBO stabile se e solo segli autovalori di A hanno tutti modulo minore di uno.
Sia x(n) il numero di individui che costituiscono la popolazione all’istanten. In caso di risorse nulle la specie tende ad estinguersi con un tasso dimortalita pari ad m secondo la seguente equazione alle differenze
x(n+ 1) = mx(n). (5.2)
Esempio 24. Si consideri una popolazione con m = 0.8 e sia x(n) il numerodi individui costituenti la popolazione all’istante n. Supponendo che attual-mente il numero di individui sia pari a 50 (x(0) = 50), calcolare la dinamicadella popolazione dall’istante 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 71
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 possonosostenere una popolazione di numerosita R. In questa situazione c’e untasso di natalita dipendente dalla differenza fra la popolazione sostenibiledall’ambiente 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 all’istante n. Supponendoche attualmente il numero di individui sia pari a 50, calcolare la dinamicadella popolazione dall’istante 0 a 20. Interpretare il risultato in termini dievoluzione libera e risposta forzata.Svolgimento.Possiamo riscrivere il sistema nella forma (5.1):{
x(n+ 1) = (m− 1)x(n) +R
y(n) = x(n),
dove
A = a := m− 1, B = 1, C = 1, D = 0, u(t) = R, ∀(t ≥ 0).
Ricordiamo l’espressione per l’uscita di un sistema in funzione delle matriciche lo descrivono, cioe
x(n) = Anx(0) +n−1∑i=0
AiBu(n− 1− i)
y(n) = CAnx(0) +n−1∑i=0
CAiBu(n− 1− i) +Du(n)
Il primo addendo nell’espressione di y(n) descrive l’evoluzione libera del si-stema, cioe l’effetto delle condizioni iniziali, mentre il secondo e chiamatotermine di evoluzione forzata. Ricaviamo per il nostro esempio l’equazione
x(n) = anx(0) +n−1∑i=0
aiR.
72 CAPITOLO 5. SISTEMI LTI DISCRETI
Poiche |a| = 0.2 < 1, per n→ +∞, avremo
x∞ = limn→+∞
x(n) =1
1− aR =
50
3.
Simuliamo il sistema per verificare i risultati ottenuti. L’andamento demo-grafico 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 all’’infinito = ’...
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 73
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 200
5
10
15
20
25
30
35
40
45
50
n
x(n)
.
Figura 5.1: Andamento demografico della popolazione, Esercizio 25
Esercizio 17. Ora supponiamo che il numero di individui nati all’istanten dipenda dalla differenza fra la popolazione sostenibile dall’ambiente R equella presente all’istante n − 2 per un tasso di fertilita t. Il nuovo sistemadiventa:
x(n) = mx(n− 1) + (R− tx(n− 2)). (5.4)
Calcolare la dinamica della popolazione dall’istante 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)
74 CAPITOLO 5. SISTEMI LTI DISCRETI
Sulla base dei grafici, a quale classe di esseri viventi puo essere associatala dinamica del primo e del secondo caso rispettivamente? Riflettere sulladinamica dei due sistemi.
5.2 Risposta impulsiva
Consideriamo il modello (5.4) della dinamica di una popolazione. Tale mo-dello puo essere visto come un sistema LTI discreto con ingresso costanteu(n) = R:
x(n) = mx(n− 1)− tx(n− 2) + u(n). (5.6)
Percio, la risposta impulsiva h(n) di tale modello si puo ottenere imponendou(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 grafici prodotti, dire se i corrispondenti sistemi sono stabili omeno e verificare che le conclusioni trovate siano conformi ai risultati trovatinell’Esercizio 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 75
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 euscita 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.
76 CAPITOLO 5. SISTEMI LTI DISCRETI
In questa situazione potremo applicare l’approccio iterativo dell’Esempio 25oppure, avendo a disposizione la risposta impulsiva h, calcolare x tramite laconvoluzione 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) = Rsin( n
N0)
2+ S0. (5.8)
Calcolare la dinamica della popolazione dall’istante 0 a 60 partendo dacondizioni iniziali nulle con m = 0.6, t = 0.2, R = 5, N0 = 2 e S0 = 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 77
28 ylabel(’x(n)’)
Esercizio 19. Consideriamo una popolazione di pesci da allevamento la cuidinamica e descritta dal modello (5.6) con m = 0.6, t = 0.2, x(−2) = 0 ex(−1) = 0. Inizialmente, dal’istante 0 a 39, i proprietari dell’allevamentodecidono di non intervenire per modificare le risorse naturali che offre illaghetto che ospita questi pesci
u(n) = 5sin(n
2)
2+ 10, 0 ≤ n < 40. (5.9)
Tuttavia, gli allevatori non sono soddisfatti del numero di pesci che produ-cono e dall’istante n = 40 immettono nel lago una risorsa (che si aggiunge aquella naturale) che decresce di una unita all’aumentare di n
u(n) = 5sin( n
N0)
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 percio di co-struire un impianto sofisticato che fornisce risorse costanti nel tempo allapopolazione 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 unsistema LTI causale discreto.
Esempio 28. Consideriamo il sistema LTI dell’Esempio 26. Vogliamo cal-colare la risposta in frequenza per i due casi considerati. Stampare moduloe fase delle risposte in frequenza.
1 %%%%%%%%%%%%
2 % es28.m %
3 %%%%%%%%%%%%
4
5 clear all
78 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 79
Esercizio 20. Si consideri il sistema dell’Esercizio 18. Stampare modulo efase della risposta in frequenza H(eiθ).
5.4 Autofunzioni dei filtri
Consideriamo un sistema LTI causale BIBO-stabile con risposta impulsivah(n):
x(n) = h ∗ u(n). (5.12)
Se u(n) = sin(θ0n) per n > 0, u(t) = 0 per n ≤ 0 e h(n) e a valori reali,allora, dopo un transitorio iniziale,
x(n) = |H(ejθ0)| sin(θ0n+ arg[H(ejθ0)]). (5.13)
Osservazione 5.1. Dal punto di vista applicativo, questa proprieta permet-te di ricostruire empiricamente la risposta in frequenza di un sistema LTIstabile, mediante l’uso 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(θ0n), n ≥ 0. (5.14)
Stampare i tre seguenti grafici:
1. u(n) e x(n) (scegliamo 0 ≤ n ≤ 600)
2. |U(ejθ)| e |X(ejθ)|
3. |H(ejθ)|
Verificare dai grafici che
|H(ejθ0)| ' |X(ejθ0)||U(ejθ0)|
. (5.15)
1 %%%%%%%%%%%%
2 % es29.m %
3 %%%%%%%%%%%%
4
80 CAPITOLO 5. SISTEMI LTI DISCRETI
5 clear all
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)
5.4. AUTOFUNZIONI DEI FILTRI 81
43 H=H+h(k)*exp(-1i*theta*n(k));
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 l’Esempio 29. Stampare la fase di H(ejθ) e cal-colare arg[H(ejθ0)]. Verificare poi che nel primo grafico x e u sono sfasatetra loro di tale quantita.Suggerimento: stampare sul primo grafico il segnale continuo u(t) = sin(θ0t), t ≥0....
82 CAPITOLO 5. SISTEMI LTI DISCRETI
Capitolo 6Sistemi LTI continui
In questa sezione studieremo dei sistemi meccanici attraverso modelli LTIcontinui e causali. Preliminarmente richiamiamo alcuni risultati sulla stabi-lita BIBO per questa classe di modelli.
Definizione 6.1 (Stabilita BIBO per sistemi discreti). Un sistema LTIcausale continuo del tipo
y(t) = h ∗ u(t)
si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) see solo se per ogni ingresso limitato u(t) esiste B > 0 tale che |y(t)| ≤ B perogni t ≥ 0.
Dalla teoria sappiamo che
Teorema 6.1 (Condizioni necessarie e sufficienti per la BIBO stabilita).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 <∞.
83
84 CAPITOLO 6. SISTEMI LTI CONTINUI
Infine, la funzione di trasferimento H(s) sia razionale ed in forma minima,priva cioe di poli e zeri coincidenti. Allora, esprimendo il sistema nella formain spazio di stato {
ddtx(t) = Ax(t) +Bu(t)
y(t) = Cx(t) +Du(t), (6.1)
in cui H(s) = C(sI−A)−1B+D, possiamo introdurre un’ulteriore condizionenecessaria e sufficiente per la stabilita BIBO.
Teorema 6.2. Il sistema in forma minima (6.1) e BIBO stabile se e solo segli autovalori di A sono tutti a parte reale negativa.
6.1 Equazioni differenziali in Matlab
Consideriamo l’equazione differenziale del secondo ordine a parametri costan-ti
ad2
dt2y(t) + b1
d
dty(t) + b0y(t) = u(t) (6.2)
dove a 6= 0 e u(t) noto. Poniamo
v1(t) = y(t), v2(t) =d
dty(t) (6.3)
quindi (6.2) diventa{ddtv1(t) = v2(t)
ddtv2(t) = − b1
av2(t)− b0
av1(t) + 1
au(t)
. (6.4)
Esprimendo (6.4) in forma vettoriale(ddtv1(t)
ddtv2(t)
)=
(0 1− b0
a− b1
a
)(v1(t)v2(t)
)+
(01a
)u(t). (6.5)
Infine, definendo
v(t) =
(v1(t)v2(t)
)(6.6)
e
A =
(0 1− b0
a− b1
a
), B =
(01a
), C =
(1 0
), D = 0 (6.7)
6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI85
otteniamo il sistema {ddtv(t) = Av(t) +Bu(t)
y(t) = Cv(t) +Du(t).
Osserviamo che la (6.8) e una forma equivalente di (6.2). Percio, le matriciA,B,C,D descrivono in maniera univoca l’equazione differenziale (6.2).
Osservazione 6.1. Per l’equazione differenziale del primo ordine
ad
dty(t) + b0y(t) = u(t), a 6= 0 (6.8)
abbiamo v(t) = y(t), A = − b0a
, B = 1a, C = 1, D = 0.
Esercizio 22. Si consideri l’equazione differenziale di ordine n descritta da
adn
dtny(t) +
n−1∑k=0
bkdk
dtky(t) = cu(t), a 6= 0. (6.9)
Verificare che le corrispondenti matrici sono
A =
0 1 0 . . .
. . . . . .
0 1
− b0a
. . . . . . − bn−1
a
, B =
0......1a
, C =(
0 . . . 0 1), D = 0.
(6.10)
In Matlab, per calcolare la soluzione ai valori iniziali y(t) utilizziamo lafunzione lsim. I parametri di ingresso sono: A,B,C,D, il vettore dei tempi t,
l’ingresso u e il vettore delle condizioni iniziali(y(0) d
dty(0)
)T. Nel seguito
vedremo in dettaglio l’utilizzo di tale funzione con degli esempi.
6.2 Studio di sistemi meccanici tramite mo-
delli LTI continui
In questa sezione prendiamo in esame l’equazione differenziale che descrivela dinamica di un oscillatore armonico costituito da una molla di costanteelastica k collegata ad una massa m, Figura 6.1. Sia y(t) la posizione di
86 CAPITOLO 6. SISTEMI LTI CONTINUI
k
y(t)
u(t)
M
Figura 6.1: Modello molla-massa.
un prefissato punto dell’oscillatore all’istante t. Il secondo principio delladinamica 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 :=d2
dty(t) e l’accelerazione risultante. Quindi, se ad esso non e applicata alcuna
forza esterna, il moto dell’oscillatore e descritto dalla seguente equazionedifferenziale
md2
dt2y(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 prefissato dell’oscillatore sia a 10m dalla
posizione di riposo (y(0) = 10, ddty(0) = 0), calcolare la dinamica di tale
punto dall’istante 0 a 10.In questo caso
A =
(0 1− km
0
), B =
(01m
), C =
(1 0
), D = 0 (6.12)
e u(t) = 0 in quanto l’oscillatore non e soggetto a nessuna forza.
1 %% Oscillatore armonico
2
3 close all
4 clear all
5 clc
6
6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI87
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 l’Esempio 30 supponendo che la posizione iniziale delpunto prefissato sia 20m. Che cosa si puo concludere da questi due esempi?
Ora supponiamo che sia presente l’attrito viscoso λ. L’equazione dell’o-scillatore armonico smorzato e
md2
dt2y(t) = −λ d
dty(t)− ky(t). (6.13)
Esempio 31. Si consideri un oscillatore armonico smorzato. Supponendoche il punto prefissato dell’oscillatore sia a 10m dalla posizione di riposo(y(0) = 10, d
dty(0) = 0), calcolare la dinamica di tale punto dall’istante 0 a
10 per i due seguenti casi:
• m = 0.1Kg, λ = 0.1Kgs
, k = 1.6 Nm
.
• m = 0.1Kg, λ = 0.9Kgs
, k = 1.6 Nm
.
88 CAPITOLO 6. SISTEMI LTI CONTINUI
Cosa differenzia i due casi precedenti?
In questo caso
A =
(0 1− km− λm
), B =
(01m
), C =
(1 0
), D = 0 (6.14)
e u(t) = 0 in quanto l’oscillatore 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 l’Esempio 31 supponendo che la posizione iniziale delpunto prefissato sia 20m. Che cosa si puo concludere da questi due esempi?
6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI89
Ora supponiamo che sull’oscillatore agisca una forza costante dovuta allapresenza della gravita. In questo caso l’equazione dell’oscillatore armonicodiventa
md2
dt2y(t) = −λ d
dty(t)− ky(t) +mg. (6.15)
Esempio 32. Si consideri un modello molla-massa verticale in cui c’e lapresenza della forza di gravita. Sia m = 0.1Kg, λ = 0.1Kg
s, k = 1.6 N
m.
Supponendo che il punto prefissato dell’oscillatore sia a 10m dalla posizione diriposo (y(0) = 10, d
dty(0) = 0), calcolare la dinamica di tale punto dall’istante
0 a 20.In questo caso
A =
(0 1− km− λm
), B =
(01m
), C =
(1 0
), D = 0. (6.16)
1 %% Oscillatore smorzato sottoposto alla forza di gravita
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’)
90 CAPITOLO 6. SISTEMI LTI CONTINUI
24 ylabel(’y(t)’)
25 title([’Oscillatore armonico smorzato con \lambda = ’ ,...
26 num2str(lambda )])
Esercizio 25. Ripetere l’Esempio 32 con λ = 0.9Kgs
. Perche la dinamicacambia in maniera rilevante?
Esempio 33. Consideriamo il modello
md2
dt2y(t) = −λ d
dty(t)− ky(t) + x(t). (6.17)
con m = 0.1Kg, λ = 0.1Kgs
, k = 1.6 Nm
. Supponiamo che all’oscillatore siaapplicata una forza sinusoidale:
x(t) = F0 sin(ωt), F0 = 5N. (6.18)
Stampare x(t) e la dinamica dell’oscillatore dall’istante 0 a 20 partendo dacondizioni 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 ALL’USO DI SIMULINK 91
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 l’Esempio 33 supponendo che l’oscillatore smorzatoall’istante t = 0 sia a 10m dalla posizione di riposo.
6.3 Accenni all’uso di Simulink
Simulink e uno strumento offerto da Matlab per modellare e simulare sistemi.Questo pacchetto software si compone di una serie di librerie che forniscono iblocchi elementari che, opportunamente interconnessi, andranno a realizzarelo schema a blocchi del sistema di interesse.
Per avviare Simulink dobbiamo agire sul quartultimo tasto della barradei comandi di Figura 2.2. Alternativamente, e sufficiente digitare simulink
nella Command Window. Apparira la finestra di Figura 6.2. Nella partesinistra vediamo la lista delle librerie (ognuna delle quali contiene una certatipologia di componenti base), a destra invece ci sono i diversi componenti checostituiscono la libreria selezionata. Per aprire un nuovo foglio di lavoro dovecreare il proprio schema e sufficiente premere il primo pulsante sulla barradei tasti di Figura 6.2 e apparira la finestra di Figura 6.3 dove possiamo tra-scinare dalla libreria i componenti che ci servono. I collegamenti tra i diversiblocchi vengono effettuati cliccando sul blocco di partenza e poi cliccandosul blocco di arrivo del collegamento premuto il tasto Ctrl. Facendo doppioclick sui blocchi possiamo impostarne i parametri. Il passo successivo e quel-lo di impostare i parametri della simulazione. Tali parametri si impostanoselezionando la voce configuration parameter dal menu simulation. Apparirala finestra di Figura 6.4 dove si deve impostare l’istante iniziale (star time)
92 CAPITOLO 6. SISTEMI LTI CONTINUI
Figura 6.2: Libreria di Simulink
Figura 6.3: Foglio di lavoro di Simulink
6.3. ACCENNI ALL’USO DI SIMULINK 93
Figura 6.4: Finestra per impostare i parametri della simulazione
e finale (stop time). Nel Solver options-Type scegliere Fixed-step. Ora bastafar partire la simulazione agendo sul pulsante Start simulation (Figura 6.3).
Riportiamo a titolo d’esempio un modello che permette di simulare glioscillatori analizzati nella precedente sezione. Per definire i parametri utiliz-ziamo lo script oscillatori parametri.m (che richiede la presenza del fileSimulink oscillatori.mdl nella stessa cartella).
1 %% Modello simulink per l’oscillatore
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;
94 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