dispensa matlab segnali e sistemi
-
Upload
matteo-gamberone-vitturi -
Category
Documents
-
view
238 -
download
1
Transcript of dispensa matlab segnali e sistemi
-
7/28/2019 dispensa matlab segnali e sistemi
1/90
Laboratorio Matlab
di Segnali e Sistemi
Mattia Zorzicon la collaborazione di
Francesco Guidolin e Chiara Masiero
17 maggio 2013
-
7/28/2019 dispensa matlab segnali e sistemi
2/90
2
-
7/28/2019 dispensa matlab segnali e sistemi
3/90
Indice
1 Introduzione 5
2 Funzionalita basilari di Matlab 7
2.1 Come si presenta Matlab . . . . . . . . . . . . . . . . . . . . . 7
2.2 Command Window . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Definizione 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 . . . . . . . . . . . . . . . . . . . . . . 182.4 m-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Strutture di controllo . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
-
7/28/2019 dispensa matlab segnali e sistemi
4/90
4 INDICE
5 Sistemi LTI discreti 65
5.1 Introduzione ai sistemi LTI discreti . . . . . . . . . . . . . . . 655.2 Risposta impulsiva . . . . . . . . . . . . . . . . . . . . . . . . 705.3 Risposta in frequenza . . . . . . . . . . . . . . . . . . . . . . . 735.4 Autofunzioni dei filtri . . . . . . . . . . . . . . . . . . . . . . . 75
6 Sistemi LTI continui 79
6.1 Equazioni differenziali in Matlab . . . . . . . . . . . . . . . . . 806.2 Studio di sistemi meccanici tramite modelli LTI continui . . . 816.3 Accenni alluso di Simulink . . . . . . . . . . . . . . . . . . . . 87
-
7/28/2019 dispensa matlab segnali e sistemi
5/90
Capitolo1Introduzione
Questa dispensa contiene il materiale fornito agli studenti per il laboratoriodel corso di Segnali e Sistemi per ingegneria dellInformazione svolto alluni-versita di Padova nella.a. 2011/2012. Lobiettivo principale del laboratorioe fornire una certa familiarita con lo strumento di calcolo Matlab, il qualee ampiamente usato in contesti ingegneristici e applicativi. Lobbiettivo 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 dallabbreviazione di MATrix LABoratory. Fu
creato alla fine degli anni 70 da Cleve Moler, il presidente del dipartimento discienze informatiche dellUniversita 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 allUniversit adi Stanford nel 1983. Riconoscendo il suo potenziale commerciale, si uncon Moler e Steve Bangert. Essi riscrissero Matlab in C e fondarono la TheMathWorksnel 1984 per continuare il suo sviluppo.
Matlab percio 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, 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
-
7/28/2019 dispensa matlab segnali e sistemi
6/90
6 CAPITOLO 1. INTRODUZIONE
tave. Il suo vantaggio e che e compatibile quasi completamente con Matlab.
-
7/28/2019 dispensa matlab segnali e sistemi
7/90
Capitolo2Funzionalita 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
-
7/28/2019 dispensa matlab segnali e sistemi
8/90
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 istruzioni
fornite.
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. Lultimo tasto permettere di accedere alla guida in linea
di Matlab. Affianco 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 listruzione e premereinvio. Se scriviamo unistruzione inesistente, Matlab segnala, attraverso unafrase in rosso, che il comando non esiste.
> > f hs j
? ?? U n de f in e d f u nc t io n o r v a ri a bl e fh sj .
>>
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
-
7/28/2019 dispensa matlab segnali e sistemi
9/90
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 visualizzarelecho di unistruzione e sufficiente scrivere punto e virgola dopo listruzione
> > 6 . 2 +2 - 3 . 02 ^ 2 *3 / 2 ;
>>
2.2.1 Definizione di oggetti
Definizione di una variabile realea = 3 ;
Definizione di un numero complesso> > z = 7+ i * 9
z =
7 .0 00 0 + 9 .0 0 00 i
>>
Va osservato che i e una variable predefinita come1 e in quanto
tale puo essere sovrascritta. E buona norma percio non sovrascriverei. Nota bene: anche j e considerata ununita immaginaria.
Definizione della variabile stringa s che contiene la parola ciao> > s = ci ao
s =
-
7/28/2019 dispensa matlab segnali e sistemi
10/90
10 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
ciao
>>
Definizione del vettore rigav =
1 2 3
(2.1)
>> v =[1 2 3]
v =
1 2 3
>>
Definizione del vettore colonna
v =
12
3
(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)
-
7/28/2019 dispensa matlab segnali e sistemi
11/90
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 :1 0
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 =
C ol um ns 1 t hr ou gh 4
0 0.100 0 0.200 0 0.300 0
C ol um ns 5 t hr ou gh 7
-
7/28/2019 dispensa matlab segnali e sistemi
12/90
12 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
0. 4000 0. 5000 0. 6000
>>
2.2.2 Operazioni di base sui vettori
Somma tra due vettori
u =
12
, v =
34
(2.6)
> > u = [1 ; 2 ];> > v = [3 ; 4 ];
> > w = u +v
w =
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 =
-
7/28/2019 dispensa matlab segnali e sistemi
13/90
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 definito nel camporeale)
> > u
an s =
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)
an s =
4
>>
Selezione di una sottosequenza del vettorev =
1.1 2.2 3.3 4.4 5.5 6.6
(2.8)
secondo gli indici di posizione j, k
-
7/28/2019 dispensa matlab segnali e sistemi
14/90
14 CAPITOLO 2. FUNZIONALITA 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 sufficiente immettere suoicoefficienti in un vettore, che chiameremo p, in ordine decrescente. Peresempio, consideriamo
x5 + 10x4 + 0.6x3 + 12x2 7x + 5 (2.9)
>> p =[1 10 0.6 12 -7 5]
p =
C ol um ns 1 t hr ou gh 4
1. 0000 10 .000 0 0. 6000 12 .000 0
C ol um ns 5 t hr ou gh 6
-7.0000 5. 0000
>>
2.2.3 Funzioni Matlab
Matlab fornisce molte funzioni allutente. Largomento delle funzioni, sepresente, e compreso tra parentesi tonde.
-
7/28/2019 dispensa matlab segnali e sistemi
15/90
2.2. COMMAND WINDOW 15
Esempio 1. Vogliamo valutare la seguente funzione polinomiale per x = 2
p(x) = x5 7x + 5. (2.10)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 ] ;
> > v a lo r e = p o l y va l ( p , 2 )
v al or e =
23
>>
Inoltre non e necessario salvare il valore che restituisce la funzione
> > p = [ 1 0 0 0 - 7 5 ] ;
> > p o l yv a l ( p , 2 )
ans =
23
>>
Per avere informazioni su una funzione Matlab e sufficiente scrivere helpseguito dal nome della funzione
> > h el p p o ly va l
P O L YV A L E v a lu a t e p o l y no m i a l .
Y = P OL YV AL ( P ,X ) r et ur ns t he v al ue of a
p ol yn om ia l P e va lu at ed at X . P is a v ec to r of
l en g th N + 1 w ho se e l em en t s a re t he c o ef f ic i en t s
o f t he p o ly n om i al i n d e sc e nd i ng p ow e rs .
Y = P (1 )* X ^N + P (2 )* X ^( N -1) + ... + P (N )* X
+ P ( N +1 )
If X is a m at ri x o r v ec to r , t he p ol yn om ia l is
-
7/28/2019 dispensa matlab segnali e sistemi
16/90
16 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
e va lu at ed at all p oi nt s in X . See P OL YV AL M f or
e v al u at i on i n a m at r ix s en se .
[ Y , D EL TA ] = P OL Y VA L ( P ,X , S ) u se s t he o p ti on a l
o ut pu t s t ru c tu r e S c r ea t ed b y P OL Y FI T t o g en e ra t e
p re di ct io n e rr or e st im at es D EL TA . D EL TA i s a n
e s ti m at e o f t he s t an da r d d e vi a ti o n o f t he e rr or
in p re di ct in g a f ut ur e o bs er va ti on at X by P ( X) .
If t he c oe ff ic ie nt s in P a re l ea st s qu ar es
e s ti m at e s c o mp u te d b y P OL YF IT , a nd t he e r ro rs i n
t he d at a i np ut t o P O LY FI T a re i nd ep en de nt ,
n or ma l , w it h c o ns t an t v ar ia nc e , t he n Y + / - D EL TAw il l c on t ai n a t l ea st 5 0\ % o f f ut ur e o b se r va t io n s
at X .
Y = P OL YV AL ( P ,X ,[ ] , MU ) o r [ Y , DE LT A ] =
P OL Y VA L ( P ,X , S , MU ) u se s X HA T = ( X - MU ( 1 )) / M U (2 ) i n
p la ce o f X . T he c en t er i ng a nd s ca l in g p a ra m et e rs
M U a re o p ti o na l o ut p ut c o mp u te d b y P OL Y FI T .
C la ss s u pp o rt f or i np ut s P , X ,S , M U :
f l oa t : d ou bl e , s i ng l e
S ee a l so p ol y fi t , p o l yv a l m .
O v e rl o a d ed m e t ho d s :
g f / p o l y v a l
R e fe r en c e p ag e i n H el p b r ow se r
d oc p o ly v a l
>>
Esempio 2. Vogliamo calcolare le radici del polinomio
x5 7x + 5. (2.11)
-
7/28/2019 dispensa matlab segnali e sistemi
17/90
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 delpolinomio.
> > p = [ 1 0 0 0 - 7 5 ] ;
> > r oo ts ( p )
ans =
-1.7704
- 0. 16 18 + 1 . 66 71 i
- 0. 16 18 - 1 . 66 71 i
1.3464
0.7477
>>
Riportiamo alcune funzioni Matlab di interesse.
Funzioni costantiFunzione Descrizione
pi
exp(1) numero di Nepero
eps Precisione di Matlab
Funzioni per numeri realiFunzione 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 xacos(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
-
7/28/2019 dispensa matlab segnali e sistemi
18/90
18 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
Funzioni per numeri complessiFunzione 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 ez
Funzioni per vettori e matriciFunzione Descrizione
length(v) Restituisce la lunghezza del vettore v
norm(v) Restituisce la norma euclidea di vsum(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 piu piccolo di v
max(v) Restituisce il valore e la posizione dellelemento 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 polino mio
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 finestra Command Window
num2str(x) Restituisce la variabile stringa che corrisponde alla variabile reale/complessa x
pause Arresta linserimento di istruzioni nel Command Window, leffetto termina premendo INVIO
% Simbolo per i commenti
2.3 Gestione delle variabili
Ogni variabile definita nel Command Window viene memorizzata nel Work-Space. Listruzione whospermette la visualizzazione delle variabili del Work-Space
> > w ho s
-
7/28/2019 dispensa matlab segnali e sistemi
19/90
2.3. GESTIONE DELLE VARIABILI 19
Name Size By tes Clas s A tt r i b u t e s
A 2 x4 64 do ub le
ans 1 x1 8 do ub le
v 1 x7 56 do ub le
>>
Listruzione clear permette la cancellazione di una o tutte le variabili delWorkSpace
> > w ho s
Name Size By tes Clas s A tt r i b u t e s
A 2 x4 64 do ub le
ans 1 x1 8 do ub le
v 1 x7 56 do ub le
> > c le ar A
> > w ho s
Name Size By tes Clas s A tt r i b u t e s
ans 1 x1 8 do ub le
v 1 x7 56 do ub le
> > c le ar a ll
> > w ho s
>>
Chiudendo Matlab tutte le variabili del WorkSpace vengono perse. Per sal-vare tutte le variabili del WorkSpace si ricorre allistruzione saveseguita dalnome del file su cui verranno salvate
> > s av e r i su l ta t i
>>
dopo questa istruzione Matlab crea il file risultati.mat nella cartella di la-voro. In questa maniera possiamo uscire dallambiente Matlab senza perderei nostri dati. Per ricaricare tutte le variabili salvate nel file .mat si utilizza ilcomando load
> > l oa d r i su l ta t i
-
7/28/2019 dispensa matlab segnali e sistemi
20/90
20 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
>>
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 laltro in un ordinefissato. In tal caso la successione di comandi deve essere memorizzata in unfile 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 4T
. (2.12)
-
7/28/2019 dispensa matlab segnali e sistemi
21/90
2.4. M-FILES 21
1 % % % % % % % % % % %
2 % es3 . m %
3 % % % % % % % % % % %
4
5 c l ea r a ll % c a nc e ll o i l v ec c hi o W o rk S pa c e
6 clc % p ul is ci l o s ch er mo
7 x =[1 2 3 4] ;
8 m e d i a = s u m ( x ) / l e n g t h ( x ) ;
9 d i f f = x - m e d i a ; % v e tt o re d i ff e re n za
10 d e v _ s t d = s q r t ( s u m ( d i f f . ^ 2 ) / l e n g t h ( x ) ) ;
11 d i s p ( [ M ed ia n u m 2 s t r ( m e d i a ) ] ) % s t a m po r i s ul t a ti
12 d i s p ( [ D e vi a zi o ne s t an d ar d n u m 2 s t r ( d e v _ s t d ) ] )
Eseguendo es3.m otteniamo
M ed ia 2 .5 D e vi a zi o ne s t an da r d 1 .1 18
>>
Esempio 4. Vogliamo creare il programma es4.m che salva i due vettori
u =
4 7 9T
, v =
0 1 3T
(2.13)
nel file dati.mat
1 % % % % % % % % % % %
2 % es4 . m %
3 % % % % % % % % % % %4
5 c l ea r a ll
6 u =[4 7 9] ; % g en er o i v et to ri u , v
7 v = [0 ; 1 ; 3 ];
8 s a ve d a ti % s al vo l e v a ri a bi li d el W o rk S pa c e
Esempio 5. Utilizzando i vettori dellesercizio precedente, calcolare uTv
1 % % % % % % % % % % %
2 % es5 . m %
3 % % % % % % % % % % %
4
5 c l ea r a ll % c a n ce l lo t ut te l e v a ri a bi l i W o rk S pa c e
6 l o ad d a ti % c a ri c o i l v e cc h io W o rk S pa c e
7 u * v
-
7/28/2019 dispensa matlab segnali e sistemi
22/90
22 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
2.5 Strutture di controllo
Oltre agli operatori aritmetici esistono gli operatori relazionali , ==, =, ~= che corrispondono ai simboli matematici ,=,,,=. Mediantequesti 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 if1 if [ c o n d i z i o n e ]
2 [ i s t r u z i o n i ]
3 else
4 [ i s t r u z i o n i ]5 end
Struttura for1 for j = m i n : m a x
2 [ i s t r u z i o n i ]
3 end
Struttura while1 while [ c o n d i z i o n e ]
2 [ i s t r u z i o n i ]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.14)
1 % % % % % % % % % % %
2 % es6 . m %
3 % % % % % % % % % % %
-
7/28/2019 dispensa matlab segnali e sistemi
23/90
2.5. STRUTTURE DI CONTROLLO 23
4
5 c l ea r a ll
6 clc % p u li sc i l o s c he r mo
7 p = [ 1 0 0 1 ] ; % p o li n om i d a s o mm a re
8 q = [2 7 -3 ];
9 if l e n g t h ( p ) < l e n g t h ( q )
10 c o r t o = p ;
11 l u n g o = q ;
12 else
13 c o r t o = q ;
14 l u n g o = p ;
15 end
16 d i f f = l e n g t h ( l u n g o ) - l e n g t h ( c o r t o ) ;17 if diff >0
18 s o mm a = [ z e r os ( 1 , d i f f ) c o rt o ] + l u n go ; % a g gi u ng i z er i a l p o li n om i o
19 % p iu c o rt o
20 else
21 s o m m a = c o r t o + l u n g o ;
22 end
23 d i s p ( P o l i no m i o s o mm a )
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 numerovenga stampato dopo che lutente ha digitato INVIO.
1 % % % % % % % % % % %
2 % es7 . m %
3 % % % % % % % % % % %
4
5 c l ea r a ll
6 clc % p u l i sc i f i n es t r a C o m ma n d W i nd o w
7 for n = 1 : 1 0
8 d i s p ( n ^ 2 )
9 pause10 end
Esempio 8. Scrivere lo stesso programma dellEsempio 7 utilizzando il con-trollo while.
-
7/28/2019 dispensa matlab segnali e sistemi
24/90
24 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
1 % % % % % % % % % % %
2 % es8 . m %
3 % % % % % % % % % % %
4
5 c l ea r a l l
6 clc % p u li s ci f in e st ra C o mm an d W in d ow
7 n = 1 ;
8 while n < = 1 0
9 d i s p ( 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.15)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 un
opportuno 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.16)calcoliamo
y =
f(t1) . . . f (tn)T
. (2.17)
Infine utilizziamo la funzione plot passandole i vettori t e y.
-
7/28/2019 dispensa matlab segnali e sistemi
25/90
2.6. GRAFICI 25
Esempio 9. Stampare il segnale
f(t) = sin(25
t 0.1), t [0, 10] (2.18)
con passo di campionamento pari a T = 0.02.
1 % % % % % % % % % % %
2 % es9 . m %
3 % % % % % % % % % % %
4
5 c l ea r a l l
6 T = 0 . 0 2 ; % p a s so d i c a m p io n a m en t o
7 t = 0 : T : 1 0 ; % c rea il v et to re t
8 for j = 1 : l e n g t h ( t ) % cr ea il v et to re y9 y ( j ) = s i n ( 2 * p i / 5 * t ( j ) - 0 . 1 ) ;
10 end
11 p l o t ( t , y )
12 x l a b e l ( t ) % nome asse x
13 y l a b e l ( f ( t ) ) % nome asse y
14 ax is ( [0 10 , -1 1 ]) % a ss i d el g ra fi co
15 g ri d o n % g r ig l ia g r af i co
Eseguendo il programma otteniamo il grafico di Figura 2.4. Matlab oltre allafigura fornisce una serie utility grafiche: salva figura, zoom grafico, esplora
grafico, datatip. Osserviamo che in questo m-fileci sono delle nuove funzionidi Matlab. Nella seguente tabella ne riportiamo la descrizione.
Funzione Descrizione
figure 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 lasse x con la variabile stringa s
ylabel(s) Chiama lasse y con la variabile stringa s
legend() Istruzione per la legenda del grafico
title(s) Intitola il grafico usando la variabile stringa saxis([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)
stem Istruzione per stampare segnali a tempo discreto
-
7/28/2019 dispensa matlab segnali e sistemi
26/90
26 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
Figura 2.4: Grafico dellEsempio 9
Esercizio 1. Consideriamo il segnale dellEsempio 9. Ripetere lesempio conT = 0.8 e T = 2. Commentare i grafici trovati.
Esercizio 2. Stampare il segnale
f(t) = e0.01t sin(0.4t), t
[0, 100]. (2.19)
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) = e0.1t cos(2t) (2.20)
con passo di campionamento pari a T = 0.02.
1 % % % % % % % % % % % %
2 % es10 . m %3 % % % % % % % % % % % %
4
5 c l ea r a ll
6 c l os e a ll % c h iu do t ut te l e f i ni e st r e a pe rt e
-
7/28/2019 dispensa matlab segnali e sistemi
27/90
2.6. GRAFICI 27
7 T = 0 . 0 2 ; % p a s so d i c a m p io n a m en t o
8 t = 0 : T : 5 0 ; % c rea il v et to re t
9 y = c o s ( 2 * t ) ; % c re a il v et to re per f
10 z = e x p ( - 0 . 1 * t ) . * c o s ( 2 * t ) ; % c rea il v et to re p er g
11 p l o t ( t , y ) % s t am po i l p ri mo g r af ic o
12 x l a b e l ( t ) % nome asse x
13 y l a b e l ( f ( t ) ) % nome asse y
14 t i t l e ( p r im o g r af i c o ) % t it o lo g r af ic o
15 figure % a pr o u na n uo va f i gu ra
16 p l o t ( t , z , r ) % s t am p o i l s e co n do g ra f ic o
17 x l a b e l ( t ) % nome asse x
18 y l a b e l ( g ( t ) ) % nome asse y
19 t i t l e ( s e c on d o g r a fi c o ) % t it ol o g r af ic o
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 listruzione 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 allEsempio 10, vedere cosa succede quan-do:
tolgo la riga quindici sostituisco la riga quindici con hold on.
-
7/28/2019 dispensa matlab segnali e sistemi
28/90
28 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB
-
7/28/2019 dispensa matlab segnali e sistemi
29/90
Capitolo3Segnali 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 c l ea r a l l
6 c l os e a l l
7 clc
8 T = 0 . 0 2 ; % p a s so d i c a m p io n a m en t o
9 t = - 5 : T : 5 ; % c rea il v et to re t
10 y = e x p ( s i n ( 2 * t ) ) ;11 y _ r i b = w r e v ( y ) ; % c re o i l v et to re p er l a f un zi on e
12 % r i b al t a ta
13 y _ p a r i = 0 . 5 * ( y + y _ r i b ) ; % v e tt o re p ar te p ar i
14 y _ d i s p = 0 . 5 * ( y - y _ r i b ) ; % v e t t or e p a rt e d i s pa r i
29
-
7/28/2019 dispensa matlab segnali e sistemi
30/90
30 CAPITOLO 3. SEGNALI E CONVOLUZIONI
15 p l o t ( t , y ) % g ra f ic i
16 h ol d o n
17 plot(t ,y_pari , r )
18 plot(t ,y_disp , g )
19 x l a b e l ( t )
20 l e g e n d ( f ( t ) , p ar te p ar i , p a rt e d i s pa r i ) % l e g e n d a
21 g ri d o n
In Figura 3.1 e mostrato il grafico che stampa Matlab.
5 4 3 2 1 0 1 2 3 4 51.5
1
0.5
0
0.5
1
1.5
2
2.5
3
t
f(t)
parte pari
parte dispari
Figura 3.1: Grafico dellEsempio 11
Esercizio 4. Stampare la parte reale e immaginaria del segnale complesso
f(t) = ej2ft, t [0, 0.5] (3.2)
con f = 0.1.
3.2 Area ed energia di un segnaleIn questa sezione vediamo come calcolare larea e lenergia (e quindi ancheil valore medio e la potenza) di un dato segnale. Iniziamo con i segnali atempo continuo.
-
7/28/2019 dispensa matlab segnali e sistemi
31/90
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 sufficientemente grande. ScegliamoM = 1000 e T = 0.02. Sapendo che
sinc(t)dt esiste, e lecito considerarela seguente approssimazione
sinc(t)dt MT
k=
MT
Tsinc(kT), (k Z). (3.4)
Infine utilizziamo la funzione sinc di Matlab.
1 % % % % % % % % % % % %
2 % es12 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a l l
6 c l os e a l l
7 clc
8 T = 0 . 0 2 ; % p a s so d i c a m p io n a m en t o
9 M = 1 0 0 0 ;10 t = - M : T : M ; % c rea il v et to re t
11 y = s i n c ( t ) ;
12 p l o t ( t , y ) % s t a m pa g r a fi c o
13 x l a b e l ( t )
14 y l a b e l ( f ( t ) )
15 g ri d o n
16 a r e a = T * s u m ( y ) ; % c a l c o la a r ea
17 disp([ Ar ea d el s in c : n u m 2 s t r ( a r e a ) ] )
Esercizio 5. Consideriamo il segnale dellEsempio 12. Calcolare il valoremedio lenergia e la potenza di f.
Esempio 13. Scrivere un programma che stampa il segnale periodico (su unperiodo)
f(t) = sin3(t), t R (3.5)
-
7/28/2019 dispensa matlab segnali e sistemi
32/90
32 CAPITOLO 3. SEGNALI E CONVOLUZIONI
e ne calcola lenergia.
La periodicita del segnale e Tp = 2. Sapendo che20 |f(t)|
2
dt esiste ede finito, per calcolare lenergia e lecita lapprossimazione
Tp0
|f(t)|2dt 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 c l ea r a ll
6 c l os e a ll
7 clc
8 T = 0 . 0 2 ; % p a s so d i c a m p io n a m en t o
9 T p = 2 * p i ; %periodicita
10 t = 0 : T : T p ; % cr ea il v et to re t
11 y = s i n ( t ) . ^ 3 ;
12 p l o t ( t , y ) % s t a m pa g r a fi c o
13 x l a b e l ( t )
14
y l a b e l ( f ( t ) )15 g ri d o n
16 E = T * s u m ( y . ^ 2 ) ; % c a l c ol a e n e rg i a
17 d i s p ( [ E n er g ia d el la f u nz i on e : n u m 2 s t r ( E ) ] )
Esercizio 6. Consideriamo il segnale dellEsempio 13. Calcolare larea, ilvalore 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-
scretof(nT) = e0.02nT sin(nT), n 0 (3.7)
con T = 1 e ne calcola lenergia.
-
7/28/2019 dispensa matlab segnali e sistemi
33/90
3.2. AREA ED ENERGIA DI UN SEGNALE 33
1 % % % % % % % % % % % %
2 % es14 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a l l
6 c l os e a l l
7 clc
8 T = 1 ; % p a s so d i c a m p io n a m en t o
9 M = 2 0 0 ;
10 n = 0 : M ; % c re a il v et to re n
11 y = e x p ( - 0 . 0 2 * n * T ) . * s i n ( n * T ) ;
12 s t e m ( n , y ) % s t a m pa g r a fi c o
13 x l a b e l ( n )14 y l a b e l ( f ( n T ) )
15 E = T * s u m ( y . ^ 2 ) ; % c a l c ol a e n er g i a
16 disp([ E n er gi a d el s eg n al e : n u m 2 s t r ( E ) ] )
Esercizio 7. Consideriamo il segnale dellEsempio 14. Calcolare larea, ilvalore medio e la potenza di f.
Esempio 15. Consideriamo il segnale periodico a dominio discreto
f(nT) = sin2nT
Tp
, n Z
(3.8)
con T = 0.05 e TP = 2. Stampare f su un periodo e calcolarne larea.
1 % % % % % % % % % % % %
2 % es15 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a l l
6 c l os e a l l
7 clc
8 T = 0 . 0 5 ; % p a s so d i c a m p io n a m en t o9 T p = 2 ; %periodicita
10 n = 0 : T p / T ; % c rea il v et to re n
11 y = s i n ( 2 * p i * n * T / T p ) ;
12 s t e m ( n , y ) % s t a m pa g r a fi c o
-
7/28/2019 dispensa matlab segnali e sistemi
34/90
34 CAPITOLO 3. SEGNALI E CONVOLUZIONI
13 x l a b e l ( n )
14 y l a b e l ( f ( n T ) )
15 A = T * s u m ( y ) ; % c a lc o lo a re a
16 d i s p ( [ Ar ea d el s eg na le : n u m 2 s t r ( A ) ] )
In Figura 3.2 e mostrato il grafico che stampa Matlab.
0 5 10 15 20 25 30 35 401
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 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. Persemplicita desposizione, 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 luso 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.
-
7/28/2019 dispensa matlab segnali e sistemi
35/90
3.3. CONVOLUZIONE 35
1 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
2 % % C o nv o lu z io n e d i s eg n al i d i sc r et i a s u pp o rt o l i mi t at o % %
3 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
4
5 c l os e a ll % c h iu de l e f i ne s tr e f ig u ra a pe rt e
6 clc % p u li s ce l a c om m an d w in do w
7
8 % Segn ali 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 % S eg n al e o t te n ut o r i ba l ta n do b
16 b _m en o = f l ip lr ( b ) ;
17 x _ b_ m en o = - f li pl r ( x _b ) ;
18
19 % % G r af ic i d ei s eg n al i d i i n te r es s e
20 f i gu r e , t i t l e ( S eg n al i d i i n te r es s e )
21 s u b p l o t ( 1 3 1 )
22 s t e m ( x _ a , a , L i n e W i d t h ,2 )
23 a xi s ([ -4 6 -5 3 ])
24 l e g e n d ( a ( n ) )
25 g ri d o n ;
26
27 s u b p l o t ( 1 3 2 )
28 s t e m ( x _ b , b , L i n e W i d t h ,2 )
29 a xi s ([ -4 6 -5 3 ])
30 l e g e n d ( b ( n ) )
31 g ri d o n ;
32
33 s u b p l o t ( 1 3 3 )
34 stem( x_b_meno ,b_meno , r , L i n e W i d t h ,2)35 a xi s ([ -4 6 -5 3 ])
36 l e g e n d ( b _ { - } ( n ) )
37 g ri d o n ;
38
-
7/28/2019 dispensa matlab segnali e sistemi
36/90
36 CAPITOLO 3. SEGNALI E CONVOLUZIONI
39 % % R a p p re s e n t az i o n e g r a fi c a d e ll a c o n v ol u z i on e
40 f i g ur e , t i t l e ( C o n v o lu z i o ne a * b )
41 n_c = l en gt h (a ) + l en gt h( b) -1 ;
42
43 c = c on v (a , b );
44
45 for i = 0: n_c - 1
46 s u b p l o t ( 3 , 2 , i + 1 )
47 s t e m ( x _ a , a , L i n e W i d t h ,2 )
48 h ol d o n
49 s t em ( x _ b _ m e no + i , b _ me no , r , L i n e W i d t h ,2)
50 a xi s ([ -4 6 -5 3 ])
51 s e t ( g c a , Y T i c k ,-4:3)52 t i t l e ( [ c ( , n u m 2 s t r ( i ) , ) = , n u m 2 s t r ( c ( i + 1 ) ) ] )
53 g ri d o n ;
54 end
55
56 % % G ra fi co d el la c on vo lu zi on e c = a * b
57 figure
58 s t e m ( c , b , L i n e W i d t h ,2)
59 t i t l e ( c ( n ) )
60 g ri d o n ;
Consideriamo ora un esempio di convoluzione tra segnali continui. Sianodati i segnali rettangolari f(t) e g(t) definiti come
f(t) = Afrect
t tf
Df
,
g(t) = Agrect
t tg
Dg
.
La convoluzione per segnali continui e definita come
f g(t) :=
f(t )g() d.
Nel caso di interesse, lintegrale 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).
-
7/28/2019 dispensa matlab segnali e sistemi
37/90
3.3. CONVOLUZIONE 37
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)
-
7/28/2019 dispensa matlab segnali e sistemi
38/90
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 qualepossiamo ricorrere al comando conv di Matlab.
1 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
2 % % C o nv o lu z io n e d i s eg n al i c o nt i nu i a s up p or to l i mi t at o % %
3 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
4
5 % C a lc o li a mo c on M at la b u na v er s io ne a p pr o ss i ma t a d el la
6 % c o nv o lu z io n e d ei s eg n al i c o nt i nu i
7
8 % f (t ) = A _f * r ec t (( t - t_ f )/ D _f )
9 % g (t ) = A _g * r ec t (( t - t_ g )/ D _g )
10
11 % % S e gn a li d i i n te r es s e
12
13 clc
14 c l os e a l l
15
16 % P a ra m et r i c he d e fi n is c on o i s e gn a li
17
18 A_f = 1;
19 A_g = 1;
20
21 t_f = 2;
-
7/28/2019 dispensa matlab segnali e sistemi
39/90
3.3. CONVOLUZIONE 39
22 t _ g = 3 ;
23
24 D _ f = 5 ;
25 D _ g = 1 ;
26
27 % A p p r os s i m a zi o n e d i s cr e t a
28 T = 0 .0 01 ;
29 x = -5: T :5 ;
30
31 f = z er os ( s i ze ( x ) );
32 f _ i n i z i o = f i n d ( x = = t _ f - 0 . 5 * D _ f ) ;
33 f _f in e = f in d (x == t _f + 0. 5* D _f ) ;
34 f ( f _ i n i z i o : f _ f i n e ) = D _ f ;35
36 g = z er os ( s i ze ( x ) );
37 g _ i n i z i o = f i n d ( x = = t _ g - 0 . 5 * D _ g ) ;
38 g _f in e = f in d (x == t _g + 0. 5* D _g ) ;
39 g ( g _ in i zi o : g _ fi n e ) = D _g ;
40
41 g _m en o = f l ip lr ( g ) ;
42 x _ g_ m en o = - f l ip lr ( x ) ;
43
44 % % G r af ic i
45 s u b p l o t ( 1 3 1 )
46 p l o t ( x , f , L i n e W i d t h ,2);
47 l e g e n d ( f )
48 g ri d o n
49
50 s u b p l o t ( 1 3 2 )
51 p l o t ( x , g , L i n e W i d t h ,2);
52 l e g e n d ( g )
53 g ri d o n
54
55 s u b p l o t ( 1 3 3 )56 plot( x_g_meno ,g_meno , r , L i n e W i d t h ,2);
57 l e g e n d ( g _ { - } )
58 g ri d o n
59
-
7/28/2019 dispensa matlab segnali e sistemi
40/90
40 CAPITOLO 3. SEGNALI E CONVOLUZIONI
Figura 3.6: Segnali convolvendi f(t) e g(t) (in blu) e versione ribaltata dig(t) (in rosso)
Figura 3.7: Grafico di f g(t) per Af = Ag = tf = tg = 1
60 % % C o n v ol u z i on e ( a p p r o s s im a z i o ne d i s cr e t a )
61 % A t te n zi o ne a m o lt i pl i ca r e p er i l p as so d i c a mp i on a me n to
62 c o nv _ fg = T * c on v (f , g );
63 x _c on v = - 10 : T :1 0;
64 figure , plot( x_conv ,conv_fg , b , L i n e W i d t h ,2)
65 l e g e n d ( c o n v ( f , g ) )
66 g ri d o n
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 = Df = Dg = 1.
Prendiamo ora in considerazione la risposta y di un sistema lineare (tempo
-
7/28/2019 dispensa matlab segnali e sistemi
41/90
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 filtro lineare, causale con risposta impulsiva
h(t) = et + et, t 0. (3.10)Supponiamo di alimentare il filtro con un gradino unitario x allistante 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 =t0
h(t )x()d. (3.12)
Sotto ipotesi simili a quelle dellEsempio 12, fissando un T sufficientementepiccolo abbiamo la seguente approssimazione
y(t) T tT
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 c l ea r a ll6 c l os e a ll
7 clc
8 T = 0 . 0 0 1 ;
9 a l p h a = - 0 . 4 + j * 0 . 6 ;
-
7/28/2019 dispensa matlab segnali e sistemi
42/90
42 CAPITOLO 3. SEGNALI E CONVOLUZIONI
10 % a l ph a = j * 0 . 6;
11 % a l ph a = 0 . 0 4+ j * 0 .6 ;
12 t = 0 : T : 3 0 ;
13 h = e x p ( a l p h a * t ) + e x p ( c o n j ( a l p h a ) * t ) ;
14 p l o t ( t , h ) % s ta mp a r i sp o st a i m pu l si v a
15 t i t l e ( r i s p os t a i m p ul s i va )
16 x = o n e s ( 1 , l e n g t h ( t ) ) ; % i n g r e s s o
17 y = T * c o n v ( x , h ) ; % u s ci ta d el f il tr o
18 y = [ y ( 1 : l e n g t h ( t ) ) ] ; % r i a g g i u s ta m e n t o d el v e t to r e
19 figure
20 p l o t ( t , y )
21 t i t l e ( u sc it a d el f il t ro )
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.
0 5 10 15 20 25 3015
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 filtro dellEsempio 16
Esercizio 9. Consideriamo un filtro lineare, causale con risposta impulsiva
h(t) = e1t + e1t + e2t + e2t, t 0. (3.14)
Supponiamo di alimentare il filtro con un gradino unitario x allistante ze-ro. Calcolare la risposta impulsiva e la risposta y al gradino unitario per i
-
7/28/2019 dispensa matlab segnali e sistemi
43/90
3.3. CONVOLUZIONE 43
seguenti valori di 1 e 2:
1 = 0.4 + j0.6, 2 = 0.4 + j0.61 = 0.4 + j0.6, 2 = j0.61 = 0.4 + j0.6, 2 = 0.04 + j0.61 = 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 alli-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)
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 c l ea r a ll
6 c l os e a ll
-
7/28/2019 dispensa matlab segnali e sistemi
44/90
44 CAPITOLO 3. SEGNALI E CONVOLUZIONI
7 clc
8 a l p h a = 0 . 8 + j * 0 . 4 ;
9 % a l ph a = 0 . 8 + j * 0 .6 ;
10 % a l ph a = 0 . 8 + j * 0 . 63 ;
11 n = 0 : 1 : 8 0 ;
12 h = a l p h a . ^ n + c o n j ( a l p h a ) . ^ n ;
13 % s te m (t , h ) % s ta mp a r i sp o st a i m pu l si va
14 % t i tl e ( r i s p o st a i m pu l si v a )
15 x = o n e s ( 1 , l e n g t h ( n ) ) ; % i n g r e s s o
16 y = c o n v ( x , h ) ; % u s ci ta d el f il t ro
17 y = [ y ( 1 : l e n g t h ( n ) ) ] ; % r i a g g i u s ta m e n t o d el v e t to r e
18 % f ig ur e
19 s t e m ( n , y )20 t i t l e ( u sc it a d el f il t ro )
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.
0 10 20 30 40 50 60 70 8010
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 filtro dellEsempio 17
Esercizio 10. Consideriamo un filtro lineare discreto, causale con rispostaimpulsiva
h(n) = n1 + 1n + n2 + 2
n, n 0. (3.19)
-
7/28/2019 dispensa matlab segnali e sistemi
45/90
3.3. CONVOLUZIONE 45
Supponiamo di alimentare il filtro con un gradino unitario discreto x alli-
stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per iseguenti 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 stabilita dei sistemi.
-
7/28/2019 dispensa matlab segnali e sistemi
46/90
46 CAPITOLO 3. SEGNALI E CONVOLUZIONI
-
7/28/2019 dispensa matlab segnali e sistemi
47/90
Capitolo4Analisi 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=
akej2kFt
(4.1)
dove
ak =1
Tp
Tp0
x(t)ej2kFtdt, F =1
Tp. (4.2)
Esempio 18. Considerare lo sviluppo in serie di Fourier di unonda quadra
x(t) = A0repTprect
t
dTp
(4.3)
con duty cycle d = 0.3, periodo Tp = 2 e ampiezza A0 = 7. Illustrare leffetto
Gibbs troncando lo sviluppo a N = 10, 30, 50 armoniche.In questo caso e facile vedere che
ak = A0dsinc(kd). (4.4)
47
-
7/28/2019 dispensa matlab segnali e sistemi
48/90
48 CAPITOLO 4. ANALISI DI FOURIER
1 % % % % % % % % % % % %
2 % es18 . m %
3 % % % % % % % % % % % %
4
5 % S er ie d i F ou r ie r t r on c at a d el s e gn al e
6 % x (t ) = r ep _T p A0 r ec t (t /( d Tp ) )
7
8 c l os e a l l
9
10 T p = 2 ; % T em po d i c a mp i on a me n to
11 d = 0 . 3 ; % D ut y c yc le
12 A 0 = 7 ; % A m pi e zz a d el s e gn al e r ec t
13
14 % N um er o d i a r mo n ic h e c o ns i de r at e n el t r on c am e nt o
15 N = 1 0 ;
16 % N = 30 ;
17 % N = 50 ;
18
19 % c a lc o lo d ei c o ef f ic i en t i d i F ou r ie r
20 a 0 = A 0 * d * s i n c ( 0 ) ;
21 for k = 1 : N
22 a _ p i u ( k ) = A 0 * d * s i n c ( k * d ) ; % a_n per n >0
23 a _ m e n o ( k ) = A 0 * d * s i n c ( - k * d ) ; % a_n per n
-
7/28/2019 dispensa matlab segnali e sistemi
49/90
4.1. SERIE DI FOURIER 49
0 0.5 1 1.5 2 2.5 31
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) = 2k=1
(1)k1 1k
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 c l ea r a ll
6 c l os e a ll
7 N = 1 0 ;
8 % N = 30 ;
9 % N = 50 ;
10 % c a lc o lo d el la s er ie d i F ou r ie r
11 t = 0 : 0 . 0 1 : 2 0 ;
12 x = z e r o s ( 1 , l e n g t h ( t ) ) ;13 for k = 1 : N
14 x = x + 2 * ( - 1 ) ^ ( k - 1 ) / k * s i n ( k * t ) ;
15 end
16 % s t a m pa s e g na l e
-
7/28/2019 dispensa matlab segnali e sistemi
50/90
50 CAPITOLO 4. ANALISI DI FOURIER
17 p l o t ( t , x )
0 2 4 6 8 10 12 14 16 18 204
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 Tp = 2, cosdefinito 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 c l os e a l l
6
7 T p = 2 ; % P e ri od o d el s eg n al e
8 T = 0.01; % D i s c re t i z z az i o n e
-
7/28/2019 dispensa matlab segnali e sistemi
51/90
4.1. SERIE DI FOURIER 51
9 t = 0: T: Tp ;
10 % s eg n al e
11 s t = z e ro s ( 1 , l e n gt h ( t ) ) ;
12 for i = 1 : le ng th ( t )
13 if ( t( i) < 1)
14 s t (i ) = 2 *( 1 - t ( i )) ;
15 else
16 s t ( i ) = 2 ;
17 end
18 end
19 f i g u r e ;
20 p l o t ( t , s t , L i n e W i d t h ,2);
21 t i t l e ( S e gn a le o r ig i na l e s u u n p e ri o do )22 g ri d o n ;
23 a xi s ([ 0 2 -1 3 ]) ;
24
25 % % S er ie di F ou ri er
26 % N = 1 0 ;
27 N = 3 0 ;
28 % N = 5 0 ;
29 sk = ze ros (1 , N);
30 s k_ = z er os ( 1 , N );
31 q = 1 : N ;
32 for k = 1 : l en gt h ( t )
33 s k = s k + T * 1/ T p * st ( k )* e x p ( -1 i * 2* p i * q* t ( k )/ T p );
34 s k_ = s k_ + T * 1/ T p * st ( k )* e xp ( 1 i * 2* p i * q* t ( k )/ T p );
35 end
36 f i g u r e ;
37 s t e m ( 1 : N , s k , r , L i n e W i d t h ,2);
38 g ri d o n ;
39 t i t l e ( C o ef f ic i en t i d el la s er ie d i F ou r ie r )
40
41 % % R i co s tr u zi o ne d el s e gn a le m ed i an te l a s er ie t r on c at a
42 x = T * 1 / 2* s u m ( s t ) * o n es ( 1 , l e n g th ( t ) ) ;43 for k = 1 : N
44 x = x + s k (k ) * ex p (1 i * 2* p i * q (k ) * t /2 ) +. . .
45 s k _ ( k ) * e x p ( - 1 i * 2 * p i * q ( k ) * t / 2 ) ;
46 end
-
7/28/2019 dispensa matlab segnali e sistemi
52/90
52 CAPITOLO 4. ANALISI DI FOURIER
47 f i g u r e ;
48 p l o t ( t , s t , - - , L i n e W i d t h ,2 )
49 h ol d o n
50 p l o t ( t , x , L i n e W i d t h ,2);
51 g ri d o n ;
52 l e g e n d ( S e g na l e o r i gi n a le ,...
53 [ S e g n al e r i co s tr u it o , N = , n u m 2 s t r ( N ) ] )
54 a xi s ([ 0 2 -1 3 ]) ;
Esercizio 11 Bis. Consideriamo la serie di Fourier
x(t) =
k=ake
jkt (4.7)
dove
ak =
0, k, pari 2
k2, k dispari.
. (4.8)
Stampare la corrispondente serie di Fouriertroncata 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 definita come
X(f) =
x(t)ej2ftdt, f R (4.9)
Se il precedente integrale esiste ed e finito, allora e lecita la seguente appros-simazione
X(f) TMT
k=MT
x(kT)ej2kfT, 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) TMT
k=MT
x(kT)ej2knFT, n Z (4.11)
-
7/28/2019 dispensa matlab segnali e sistemi
53/90
-
7/28/2019 dispensa matlab segnali e sistemi
54/90
54 CAPITOLO 4. ANALISI DI FOURIER
16 l e g e n d ( s _ 1 ( t )= 3 s i n c ( t ) )
17 g ri d o n
18 % % T r as l az i on e i n f r eq u en z a
19 f = - N: F: N;
20 S _1 = z e ro s ( 1 , l e n gt h ( f ) ) ;
21 for i = 1 : l e n g t h ( f )
22 S _1 ( i) = T * s _1 * e xp ( -1 i *2 * pi * f( i )* t ). ;
23 end
24 f i g ur e , p l o t ( f , r e a l ( S _ 1 ) , L i n e W i d t h ,2 )
25 g ri d o n
26 h ol d o n
27
28 pause29
30 % s e gn al e m o lt i pl i ca t o n el t em po p er u n e s po n en z ia l e c o mp l es
31 f_0 = 2;
32 s _ 1_ e = s _ 1 .* e x p ( 1 i * 2* p i * f _ 0 * t ) ;
33 S _ 1_ t = z e ro s ( 1 , l e n gt h ( f ) ) ;
34 for i = 1 : l e n g t h ( f )
35 S _1 _t ( i ) = T * s _1 _e * e xp ( - 1 i *2 * pi * f ( i )* t ) . ;
36 end
37 p l o t ( f , r e a l ( S _ 1 _ t ) , r -. , L i n e W i d t h ,2)
38 l e g e n d ( S _ 1 ( f ) , S _ 1 ( f - f _ 0 ) )
39
40 pause
41
42 % M o d u la z i on e
43 s _ 1 _c o s = s _1 . * c o s ( 2 * p i * f _0 * t ) ;
44 S _ 1 _m o d = z e ro s ( 1 , l e n gt h ( f ) ) ;
45 for i = 1 : l e n g t h ( f )
46 S _1 _ mo d ( i ) = T * s _1 _ co s * e xp ( - 1 i *2 * pi * f ( i )* t ) . ;
47 end
48 p l o t ( f , r e a l ( S _ 1 _ m o d ) , k - - , L i n e W i d t h ,2)
49 l e g e n d ( S _ 1 ( f ) , S _ 1 ( f - f _ 0 ) , M o du l az i on e i n c os e no )50
51 % % A re a d el s eg na le
52
53 % s _1 = 3* s in c (t )
-
7/28/2019 dispensa matlab segnali e sistemi
55/90
4.2. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO CONTINUO55
54
55 % c al c ol o a p pr o ss i ma t o d el l a r ea :
56 A r e a _ ap p r o ss i m a t a = T * s u m ( s _1 )
57
58 % D al la t eo ri a s ap pi am o c he
59 % s ( t) = 3 s in c (t ) - -> S ( f )= 3 re ct ( f )
60
61 S _ 0 = 3
62
63 % % C o nv o lu z io n e n el t em po
64
65 % s eg na le s _2
66 s _2 = z e ro s ( l e n g th ( 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 % s eg na le s _2
70 s _3 = z e ro s ( l e n g th ( t ) , 1) ;
71 s _ 3 ( M / T - 1 / T : M / T + 3 / T ) = 0 . 7 5 ;
72
73 figure
74 p l o t ( t , s _ 2 , b , L i n e W i d t h ,2)
75 h ol d o n
76 p l o t ( t , s _ 3 , r , L i n e W i d t h ,2)
77 g ri d o n
78 l e g e n d ( s _ 2 , s _ 3 )
79 % T r as f or m at a d i F ou r ie r d i c on v ( s_ 2 , s _3 )
80 s 2 _ co n v _ s3 = T * c o nv ( s _2 , s _ 3 ) ;
81 s 2 _ c on v _ s 3_ r e d = s 2 _ co n v _ s3 ( ( l e n g t h ( s 1 _ c o nv _ s 2 ) - 1 ) /2 - M / T : . ..
82 ( l e n g t h ( s 1 _ c o n v _ s 2 ) - 1 ) / 2 + M / T ) ;
83 plot(t,s2_conv_s3_red , k - - , L i n e W i d t h ,2)
84 l e g e n d ( s _ 2 , s _ 3 , c o n v ( s _ 2 , s _ 3 ) )
85
86 % T ra sf or ma ta di F ou ri er di s _2
87 S _2 = z e ro s ( 1 , l e n gt h ( f ) ) ;88 for i = 1 : l e n g t h ( f )
89 S _2 ( i) = T * e xp ( -1 i *2 * pi * f( i )* t ) * s _2 ;
90 end
91 % T ra sf or ma ta di F ou ri er di s _2
-
7/28/2019 dispensa matlab segnali e sistemi
56/90
56 CAPITOLO 4. ANALISI DI FOURIER
92 S _3 = z e ro s ( 1 , l e n gt h ( f ) ) ;
93 for i = 1 : l e n g t h ( f )
94 S _3 ( i) = T * e xp ( -1 i *2 * pi * f( i )* t ) * s _3 ;
95 end
96
97
98 % T r as f or m at a d i F o ur ie r d i c on v ( s_ 1 , s _2 )
99 S _ co n v = z e ro s ( 1 , l e n gt h ( f ) ) ;
100 for i = 1 : l e n g t h ( f )
101 S _c on v ( i ) = T * e xp ( - 1 i *2 * pi * f ( i )* t ) * s 2 _c o nv _ s3 _ re d ;
102 end
103
104 figure105 p l o t ( f , r e a l ( S _ 2 . * S _ 3 ) , b -- , L i n e W i d t h ,2)
106 h ol d o n
107 p l o t ( f , r e a l ( S _ c o n v ) , r -. , L i n e W i d t h ,2)
108 l e g e n d ( S _ 2 ( f ) S _ 3 ( f ) , T F ( c o n v ( s _ 2 , s _ 3 ) ) )
109 g ri d o n
Esempio 20. Stampare la trasformata di Fourier del segnale
x(t) = sinc (2t) , t R. (4.12)
1 % % % % % % % % % % % %
2 % es20 . m %
3 % % % % % % % % % % % %
4
5 c l os e a l l
6
7 T = 0.05; % p as so di c am pi on am en to d i x
8 M = 1 0 0 ;
9 t = - M: T: M; % i n te r va l lo t e mp o ra l e [ - M ,M ]
10 F = 0.05; % p as so di c am pi on am en to d i X11 N = 5;
12 f = - N: F: N; % i n te r va l lo f r eq u en z ia l e [ - N ,N ]
13
14 % s e gn al e
-
7/28/2019 dispensa matlab segnali e sistemi
57/90
4.3. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO57
15 x = s in c (2 * t);
16 % s t am pa s e gn a le
17 f ig ur e , p l ot ( t , x ) , t i tl e ( S e g na l e x ( t ) )
18
19 % t r a s f o rm a t a d i F o u ri e r
20 X = z e r o s ( 1 , l e n g t h ( f ) ) ;
21 for k = 1 : l e n g t h ( t )
22 X = X + T * x ( k ) * e x p ( - 1 i * 2 * p i * f * t ( k ) ) ;
23 end
24
25 % s t a m pa t r a s fo r m at a
26 p l o t ( f , r e a l ( X ) , r ) , t i t l e ( T r a s f or m a t a X ( f ) )
27 a xi s ( [ - 1. 5 1 .5 - 0. 1 0 .6 ])28 g ri d o n
Esercizio 12. Ripetere lEsempio 20 con F = 0.01 ed F = 0.1. Qualefenomeno e possibile osservare?
Esercizio 13. Stampare la trasformata di Fourier del segnale
x(t) = e2|t|, t R. (4.13)
Esercizio 13 Bis. Stampare il modulo della trasformata di Fourier per10 2f 10 dei seguenti segnali
x1(t) = e0.5|t|, t R (4.14)
x2(t) = cos(7t)e0.5|t|, t R. (4.15)
Come si differenziano le due trasformate?
4.3 Trasformata di Fourier per segnali a tem-
po discretoConsideriamo un segnale a tempo discreto
x(nT), n Z. (4.16)
-
7/28/2019 dispensa matlab segnali e sistemi
58/90
58 CAPITOLO 4. ANALISI DI FOURIER
La corrispondente trasformata di Fourier e
X(f) =
n=
T x(nT)ej2fnT MT
n=MT
T x(nT)ej2fnT, f R (4.17)
dove M e un numero sufficientemente grande. Anche in questo caso dobbiamocampionare linsieme delle frequenze
X(kF) =
MT
n=MT
T x(nT)ej2knFT, 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 c lc , c lo se a ll
6
7 n = - 1 0 : 1 0 ;
8 % s e g n a l e
9 x = o n e s ( 1 , l e n g t h ( n ) ) ;
10
11 % t r a s f o rm a t a d i F o ur i e r
12 F =0.01; 6
13 f = - 1 . 5 : F : 1 . 5 ;
14 X = z e r o s ( 1 , l e n g t h ( f ) ) ;
15 for k = 1 : l e n g t h ( n )16 X = X + x ( k ) * e x p ( - 1 i * 2 * p i * f * n ( k ) ) ;
17 end
18 p l o t ( f , r e a l ( X ) ) % s t a m pa t r a sf o r m at a
-
7/28/2019 dispensa matlab segnali e sistemi
59/90
4.3. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO59
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) = repNx(n), N = 40. (4.21)
Calcolare i coefficienti di Fourier ak di y(n) e stampare sul grafico dellEsem-pio 21 il segnale a tempo discreto
k
N N ak. (4.22)
Cosa si puo osservare dal grafico? Ricordare che lespressione assunta dallatrasformata di Fourier per segnali discreti periodici di periodo Tp = NT e
S(kF) =N1n=0
T s(nT)ej2knFT, (4.23)
con F = 1Tp
. I coefficienti ak della serie di Fourier corrispondente si ottengono
dalla formula precedente come
ak = F S(kF) =1
TpS(kF). (4.24)
1 % % % % % % % % % % % %
2 % es22 . m %
3 % % % % % % % % % % % %
4
5 c lc , c lo se a ll
6 n = - 1 0 : 1 0 ;
7 % s e g n a l e
8 x = o n e s ( 1 , l e n g t h ( n ) ) ;
9 % t r a s f o rm a t a d i F o u ri e r10 F = 0 . 0 1 ;
11 f = - 1 : F : 1 ;
12 X = z e r o s ( 1 , l e n g t h ( f ) ) ;
13 for k = 1 : l e n g t h ( n )
-
7/28/2019 dispensa matlab segnali e sistemi
60/90
60 CAPITOLO 4. ANALISI DI FOURIER
14 X = X + x ( k ) * e x p ( - 1 i * 2 * p i * f * n ( k ) ) ;
15 end
16 figure ,plot(f,real(X)) % s t a m pa t r a sf o r m at a
17
18 % c oe ff ic ie nt i d i F ou ri er di y ( n)
19 y = o n e s ( 1 , l e n g t h ( n ) ) ;
20 N = 4 0 ;
21 k = - 4 0 : 4 0 ;
22 a = z er os ( 1 , l en gt h ( k )) ;
23 for l = 1 : l e n g t h ( k )
24 a ( l ) = 1 / N * e x p ( - 1 i * 2 * p i / N * k ( l ) * n ) * y ;
25 end
26 h ol d o n27 s t e m ( k / N , N * a , r )
28 l e g e n d ( T r as f or m at a d el s eg n al e d i sc r et o n on p e ri o di c o ,...
29 T r as f or m at a d el s eg n al e d i sc r et o p e ri o di c o )
Esercizio 15. Ripetere lEsempio 22 ponendo T = 21. Cosa succede? Dareuna spiegazione teorica del risultato trovato.
-
7/28/2019 dispensa matlab segnali e sistemi
61/90
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 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. Lesempio 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 laliasing.
1 % I l s eg u en te c od ic e c o ns e nt e d i v i su a li z za r e l e o p er a zi o ni
2 % d i c a mp i on a me n to e i n te r po l az i on e s u d i ve rs i t ip i d i s eg n al i .
3
4 % % D ef in iz io ne d el s eg na le e s tu di o n el t em po
5 c le ar a ll ;
6 c lo se a ll ;
7 clc
8
9 c am p = 0 .0 01 ;
10 t = -4: c am p :4 ;
11 k = l en gt h (t );
12
13 f _x = 0 .5 ;
14
15 % S c eg l ie r e i l s eg n al e :16 % x = s in ( 2 * pi * f _x * t ); d is p ([ B a nd a = , n um 2 st r ( f _x ) ] )
17 % x = c os ( 2 * pi * 2* f _ x *t ) ; d is p ([ B a nd a = , n um 2s t r ( 2* f _ x ) ])
18 x = 4 * si nc ( t * 4) ; d is p ( [ Ba nd a = 2 ])
19
-
7/28/2019 dispensa matlab segnali e sistemi
62/90
62 CAPITOLO 4. ANALISI DI FOURIER
20 f i g u r e ;
21 g ri d o n ;
22 h ol d o n ;
23 p l o t ( t , x ) ;
24 t i t l e ( S e g na l e o r i gi n a le );
25 fs = i np ut ( F r eq u en z e d i c a mp i on a me n to . V al o re d i f s ?\ n );
26 T = 1 / f s ;
27 n T = -4: T :4 ;
28
29 % S e le z io n ar e i l s e gn al e c a mp i on a to :
30 % x n = s in ( 2 * pi * f _x * n T );
31 % x n = c os ( 2 * pi * 2* f _ x * nT ) ;
32 x n = 4 * s in c ( nT * 4 );33
34 s t e m ( n T , x n , r );
35
36 % f i l t ro i n t e rp o l a to r e
37 q = f s * si nc ( t * fs ) ;
38 s e g n a le _ i n te r p o l at o = z e ro s ( 1 , l e n g th ( t ) ) ;
39
40 f i g u r e ;
41 h ol d o n ;
42 g ri d o n ;
43 s t e m ( n T , x n , r );
44 for i = 1: l en gt h ( nT )
45 t em p = x n (i ) .* s i nc ( ( t - ( (i - 1 - (4 / T )) * T )) * fs ) ;
46 p l o t ( t , t e m p ) ;
47 s e g n a le _ i n te r p o l at o = s e g n a le _ i n t er p o l a to + t e mp ;
48 end
49 t i t l e ( I n t e r po l a z io n e d ei c a m pi o n i );
50
51 f i g u r e ;
52 p l o t ( t , x , - - , L i n e W i d t h ,2);
53 t i t l e ( S e g na l e o r i gi n a le );54 h ol d o n
55 p l o t ( t , s e g n a l e _ i n t e r p o l a t o , r -. , L i n e W i d t h ,2);
56 g ri d o n ;
57 t i t l e ( S e g na l e r i c os t r u it o );
-
7/28/2019 dispensa matlab segnali e sistemi
63/90
4.4. CAMPIONAMENTO E ALIASING 63
58
59 % % S tu di o i n f r eq u en z a
60 clc
61 d i s p ( S tu d io i n f re q ue n za );
62 c lo se a ll ;
63
64 F = 0 . 0 0 5 ; % p as so d i c am pi on am en to d i x
65 f = - 1 0 : F : 1 0 ;
66 % t r a s f o rm a t a d i F o u ri e r
67 X = z e r o s ( 1 , l e n g t h ( f ) ) ;
68 for k = 1 : l e n g t h ( t )
69 X = X + c a m p * x ( k ) * e x p ( - 1 i * 2 * p i * f * t ( k ) ) ;
70 end71 % s t a m pa t r a s fo r m at a s e g na l e o r i gi n a le
72 f i g u r e ;
73 p l o t ( f , r e a l ( X ) )
74 g ri d o n ;
75 t i t l e ( T r as f or m at a d i F ou r ie r d el s e gn a le o r ig i na l e ,...
76 L i n e W i d t h ,2);
77
78 pause
79
80 X n = z e r o s ( 1 , l e n g t h ( f ) ) ;
81 for k = 1 : l e n g t h ( n T )
82 X n = Xn + T * x n ( k )* e x p ( - 1 i * 2* p i * f * n T ( k ) );
83 end
84 % s t a m pa t r a s fo r m at a s e g na l e c a m p io n a t o
85 f i g u r e ;
86 h ol d o n ;
87 p l o t ( f , r e a l ( X n ) ) ;
88 t i t l e ( T r as f or m at a d i F ou r ie r d el s e gn a le c a mp i on a to ,...
89 L i n e W i d t h ,2);
90 g ri d o n
91 pause92
93 Q n = z e r o s ( 1 , l e n g t h ( f ) ) ;
94 for k = 1 : l e n g t h ( t )
95 Q n = Qn + c a mp * q ( k ) * e x p ( -1 i * 2 * p i * f * t (k ) ) ;
-
7/28/2019 dispensa matlab segnali e sistemi
64/90
64 CAPITOLO 4. ANALISI DI FOURIER
96 end
97 % s t a m pa t r a sf o r m at a d el f i lt r o i n t e rp o l a to r e
98 h ol d o n
99 p l o t ( f , r e a l ( Q n ) , r - , L i n e W i d t h ,2);
100 g ri d o n ;
101
102 % % t r as f or m at a d el s eg n al e r i co s tr u it o i n f r eq u en z e X n (f ) * Q(
103 s e g n al e _ f i lt r a t o = r e al ( X n ) . * r e al ( Q n ) ;
104
105 f i g u r e ;
106 p l o t ( f , r e a l ( X ) )
107 h ol d o n
108 plot(f,segnale_filtrato , r -. , L i n e W i d t h ,2);109 g ri d o n ;
110 l e g e n d ( T r as f or m at a d el s eg n al e o r ig i na l e ,...
111 T r a s f or m a ta d el s e gn a l e r i c o st r u it o )
112 t i t l e ( T r as f or m at a d i F o ur ie r d el s eg n al e f i lt r at o );
Esercizio 16. Consideriamo il segnale a banda infinita dellEsercizio 13.Ripetere lesercizio con T = 0.1, T = 0.5 e T = 1. Motivare, conoscendo labanda del segnale, i risultati trovati.
-
7/28/2019 dispensa matlab segnali e sistemi
65/90
Capitolo5Sistemi 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
65
-
7/28/2019 dispensa matlab segnali e sistemi
66/90
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, 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(zIA)1
B+D, possiamo introdurre unulteriore 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 allistanten. 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 allistante n. Supponendo che attual-mente il numero di individui sia pari a 50 (x(0) = 50), calcolare la dinamicadella popolazione dallistante 0 a 20.
1 % % % % % % % % % % % %
2 % es24 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a ll
6 c l os e a ll
7 clc8 m = 0 . 8 ;
9 x ( 1 ) = 5 0 ; % c o n d iz i o n e i n i zi a l e
10 for n = 2 : 2 1
11 x ( n ) = m * x ( n - 1 ) ;
-
7/28/2019 dispensa matlab segnali e sistemi
67/90
5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 67
12 end
13 s t e m ( 0 : 2 0 , x ) % s t a m pa g r af i c o
14 x l a b e l ( n )
15 y l a b e l ( x ( n ) )
Ora supponiamo che ci siano delle risorse disponibili costanti che possonosostenere una popolazione di numerosita R. In questa situazione ce untasso di natalita dipendente dalla differenza fra la popolazione sostenibiledallambiente 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. Supponendoche attualmente il numero di individui sia pari a 50, calcolare la dinamicadella popolazione dallistante 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) + Ry(n) = x(n)
,
dove
A = a := m 1, B = 1, C = 1, D = 0, u(t) = R, (t 0).Ricordiamo lespressione per luscita di un sistema in funzione delle matriciche lo descrivono, cioe
x(n) = Anx(0) +n1i=0
AiBu(n 1 i)
y(n) = CAnx(0) +n1i=0
CAiBu(n 1 i) + Du(n)
Il primo addendo nellespressione di y(n) descrive levoluzione libera del si-
stema, cioe leffetto delle condizioni iniziali, mentre il secondo e chiamatotermine di evoluzione forzata. Ricaviamo per il nostro esempio lequazione
x(n) = anx(0) +n1i=0
aiR.
-
7/28/2019 dispensa matlab segnali e sistemi
68/90
68 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. Landamento demo-grafico della popolazione e riportato in Fig. 25.
1 % % % % % % % % % % % %
2 % es25 . m %
3 % % % % % % % % % % % %
4
5 c l os e a ll
6 clc7 m = 0 . 8 ;
8 R = 2 0 ;
9 T = 2 0 ;
10 x = z er os ( 1 ,T );
11 x ( 1) = 5 0; % c o n d i z io n e i n i zi a l e
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 s t e m ( 0 : T , x ) % s t a m pa g r af i c o
18 x l a b e l ( n )
19 y l a b e l ( x ( n ) )
20
21 a = m - 1 ;
22 d i s p ( [ Va lore di a = , n u m 2 s t r ( a ) ] )
23 d i s p ( [ L im it e d i x ( n) p er n t en de nt e a ll in fi ni to = ...
24 , n u m 2 s t r ( 1 / ( 1 - a ) * R ) ] )
25 grid
26
27 % E v ol u zi o ne l ib er a28 x _l = z er os ( s i ze ( x ) );
29 x _ l ( 1 ) = x ( 1 ) ;
30 for n = 2 : T + 1
31 x _ l ( n ) = a * x _ l ( n - 1 ) ;
-
7/28/2019 dispensa matlab segnali e sistemi
69/90
5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 69
32 end
33
34 % E v ol u zi o ne f or z at a
35 x _f = z er os ( s i ze ( x ) );
36 for n = 2 : T + 1
37 x _f ( n ) = ( 1 - a ^ (n - 1 ) )/ ( 1 - a ) * R ;
38 end
39
40 figure
41 s u b p l o t ( 3 1 1 ) , s t e m ( t , x _ l , r ) , g r i d , l e g e n d ( Ev . l ib er a )
42 s u b p l o t ( 3 1 2 ) , s t e m ( t , x _ f , b ) , g r i d , l e g e n d ( Ev . f or z at a )
43 s u b p l o t ( 3 1 3 ) , s t e m ( t , x , k -- , L i n e W i d t h ,2),...
44 g ri d , h o l d o n , s t em ( t , x _ f + x _l , g ) ,45 l e g e n d ( x ( n ) , x_l + x_f )
0 2 4 6 8 10 1 2 1 4 16 1 8 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 allistanten dipenda dalla differenza fra la popolazione sostenibile dallambiente R equella presente allistante 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 dallistante 0 a 20 per i seguenti casi
x(1) = 10, x(0) = 20, m = 0.8, t = 0.4, R = 20x(1) = 10, x(0) = 20, m = 0.8, t = 1, R = 20. (5.5)
-
7/28/2019 dispensa matlab segnali e sistemi
70/90
70 CAPITOLO 5. SISTEMI LTI DISCRETI
Sulla base dei grafici, a quale classe di esseri viventi puo essere associata
la 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 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 grafici prodotti, dire se i corrispondenti sistemi sono stabili omeno e verificare che le conclusioni trovate siano conformi ai risultati trovatinellEsercizio 17.
1 % % % % % % % % % % % %
2 % es26 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a ll
6 c l os e a ll
7 clc
8 m = 0 . 8 ;
9 T = 1 00 00 ;
10 u = [0 0 1 z er os ( 1 ,T ) ]; % i n g r e ss o d e lt a ( n )
11 % % P ri mo ca so ( t = 0. 4)
12 t = 0 . 4 ;13 h = z er os ( T + 3 , 1) ; % c o nd i zi o ne i n iz i al i n ul le
14 for n = 3 : T + 3
15 h ( n ) = m * h ( n - 1 ) + ( u ( n ) - t * h ( n - 2 ) ) ;
16 end
-
7/28/2019 dispensa matlab segnali e sistemi
71/90
5.2. RISPOSTA IMPULSIVA 71
17 figure
18 s t e m ( 0 : T , h ( 3 : T + 3 ) ) % s t a m pa g r a fi c o
19 a xi s ([ - 1 2 0 , - 0. 3 1 .3 ])
20 x l a b e l ( n )
21 y l a b e l ( x ( n ) )
22 t i t l e ( Ca so t = 0.4 )
23
24 % A pp ro ss im ia mo la s er ie d ei m od ul i di h (k ):
25 disp([ S er ie d ei m od ul i a p pr o ss i ma t a ( T = ,...
26 n u m 2 s t r ( T ) , ) vale ])
27 s u m ( a b s ( h ) )
28
29 % % S ec on do c as o ( t = 1)30 t = 1 ;
31 h = z er os ( T + 3 , 1) ; % c o nd i zi o ne i n iz i al i n ul le
32 for n = 3 : T + 3
33 h ( n ) = m * h ( n - 1 ) + ( u ( n ) - t * h ( n - 2 ) ) ;
34 end
35 figure
36 s t e m ( 0 : T , h ( 3 : T + 3 ) , r ) % s t a m pa g r a fi c o
37 a xi s ([ - 1 1 00 , - 1. 5 1 .5 ])
38 x l a b e l ( n )
39 y l a b e l ( x ( n ) )
40 t i t l e ( C a s o t = 1 )
41
42 % A pp ro ss im ia mo la s er ie d ei m od ul i di h (k ):
43 disp([ S er ie d ei m od ul i a p pr o ss i ma t a ( T = ,...
44 n u m 2 s t r ( T ) , ) vale ])
45 s u m ( a b s ( 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.
-
7/28/2019 dispensa matlab segnali e sistemi
72/90
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 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 dallistante 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 c l ea r a ll
6 c l os e a ll
7 clc
8 m = 0 . 6 ;
9 t = 0 . 2 ;
10 R = 5 ;
11 N 0 = 2 ;
12 S0=10;
13 % c a lc o lo d el la r i sp o st a i m pu l si v a
14 u = [0 0 1 z er os ( 1 , 60 )] ; % i n g r e ss o d e lt a ( n )
15 h ( 1 ) = 0 ; % c o nd i zi o ne i n iz i al i
16 h ( 2 ) = 0 ;
17 for n = 3 : 6 3
18 h ( n ) = m * h ( n - 1 ) - t * h ( n - 2 ) + u ( n ) ;
19 end
20 h = h ( 3 : end ); % r i sp os t a i m pu l si v a d al l i s t an t e z er o
21 % c a lc ol o d el la r i sp o st a d el s is t em a
22 n = 0 : 6 0 ;
23 u = R * s i n ( n / N 0 ) / 2 + S 0 ;24 x = c o n v ( h , u ) ;
25 x = x ( 1 : 6 1 ) ; % r i ag g iu s ta m en t o d el v et t or e
26 s t e m ( 0 : 6 0 , x ) % s t a m pa g r a fi c o
27 x l a b e l ( n )
-
7/28/2019 dispensa matlab segnali e sistemi
73/90
5.3. RISPOSTA IN FREQUENZA 73
28 y l a b e l ( 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, dalistante 0 a 39, i proprietari dellallevamentodecidono di non intervenire per modificare le risorse naturali che offre illaghetto che ospita questi pesci
u(n) = 5sin(n2 )
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 aquella naturale) che decresce di una unita allaumentare 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 dellEsempio 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 c l ea r a l l
-
7/28/2019 dispensa matlab segnali e sistemi
74/90
74 CAPITOLO 5. SISTEMI LTI DISCRETI
6 c l os e a ll
7 clc
8 m = 0 . 8 ;
9
10 % P ri mo v al or e di t
11 t = 0 . 4 ;
12
13 % S ec on do v al or e di t
14 % t =1;
15
16 % c a lc o lo d el la r i sp o st a i m pu l si v a
17 u = [0 0 1 z er os ( 1 , 60 )] ; % i n g r e ss o d e lt a ( n )
18 h ( 1 ) = 0 ; % c o nd i zi o ni i n iz i al i19 h ( 2 ) = 0 ;
20 for k = 3 : 6 3
21 h ( k ) = m * h ( k - 1 ) - t * h ( k - 2 ) + u ( k ) ;
22 end
23 h = h ( 3 : end ); % r i sp o st a i m pu l si v a d al l i s t an te 0
24 % r i sp o st a i n f r eq u en z a
25 n = 0 : 6 0 ;
26 T h e t a = 0 . 0 1 ; % t r a s f o rm a t a d i F o u ri e r
27 t h e t a = - p i : T h e t a : p i ;
28 H = z e r o s ( 1 , l e n g t h ( t h e t a ) ) ;
29 for k = 1 : l e n g t h ( n )
30 H = H + h ( k ) * e x p ( - 1 i * t h e t a * n ( k ) ) ;
31 end
32 % s t am pa m od u lo r i sp os t a i n f r eq u en z a
33 figure
34 p l o t ( t h e t a , a b s ( H ) )
35 x l a b e l ( t h e t a )
36 y l a b e l ( | H | )
37 grid
38 % s t am pa f as e r is p os ta i n f r eq u en za
39 figure40 p l o t ( t h e t a , p h a s e ( H ) )
41 grid
42 x l a b e l ( t h e t a )
43 y l a b e l ( fa se di H )
-
7/28/2019 dispensa matlab segnali e sistemi
75/90
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 filtri
Consideriamo un sistema LTI causale BIBO-stabile con risposta impulsivah(n):
x(n) = h u(n). (5.12)Se u(n) = sin(0n) e h(n) e a valori reali, allora, dopo un transitorio iniziale,
x(n) = |H(ej0)| sin(0n + arg[H(ej0)]). (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 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(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(ej0)| |X(ej0 )|
|U(ej0)| . (5.15)
1 % % % % % % % % % % % %2 % es29 . m %
3 % % % % % % % % % % % %
4
5 c l ea r a l l
-
7/28/2019 dispensa matlab segnali e sistemi
76/90
76 CAPITOLO 5. SISTEMI LTI DISCRETI
6 c l os e a ll
7 clc
8 m = 0 . 6 ;
9 t = 0 . 2 ;
10 n = 0 : 6 0 0 ;
11 % s eg na le di i ng re ss o u
12 t h e t a 0 = 1 ;
13 u = s i n ( t h e t a 0 * n ) ;
14 T h e t a = 0 . 0 1 ; % t r a sf o rm a ta d i F o ur i er
15 t h e t a = - p i : T h e t a : p i ;
16 U = z e r o s ( 1 , l e n g t h ( t h e t a ) ) ;
17 for k = 1 : l e n g t h ( n )
18 U = U + u ( k ) * e x p ( - 1 i * t h e t a * n ( k ) ) ;19 end
20
21 % r i s p o st a i m p ul s i va
22 d = [0 0 1 z er os ( 1 , 60 0) ]; % i n g r e ss o d e lt a ( n )
23 h ( 1 ) = 0 ; % c o nd i zi o ni i n iz i al i
24 h ( 2 ) = 0 ;
25 for k = 3 : n ( end )+3
26 h ( k ) = m * h ( k - 1 ) - t * h ( k - 2