dispensa matlab segnali e sistemi

download dispensa matlab segnali e sistemi

of 90

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