laboratorio matlab di segnali e sistemi -...

94
Laboratorio Matlab di Segnali e Sistemi Mattia Zorzi con la collaborazione di Francesco Guidolin e Chiara Masiero 14 aprile 2014

Upload: ngokien

Post on 18-Feb-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Laboratorio Matlabdi Segnali e Sistemi

Mattia Zorzicon la collaborazione di

Francesco Guidolin e Chiara Masiero

14 aprile 2014

Page 2: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2

Page 3: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Indice

1 Introduzione 5

2 Funzionalita basilari di Matlab 72.1 Come si presenta Matlab . . . . . . . . . . . . . . . . . . . . . 72.2 Command Window . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.1 Definizione di oggetti . . . . . . . . . . . . . . . . . . . 92.2.2 Operazioni di base sui vettori . . . . . . . . . . . . . . 122.2.3 Operazioni di base sulle matrici . . . . . . . . . . . . . 152.2.4 Funzioni Matlab . . . . . . . . . . . . . . . . . . . . . 192.2.5 Altre istruzioni matlab . . . . . . . . . . . . . . . . . . 23

2.3 Gestione delle variabili . . . . . . . . . . . . . . . . . . . . . . 232.4 m-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.5 Strutture di controllo . . . . . . . . . . . . . . . . . . . . . . . 262.6 Grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 Segnali e convoluzioni 333.1 Segnali pari e dispari, segnali complessi . . . . . . . . . . . . . 333.2 Area ed energia di un segnale . . . . . . . . . . . . . . . . . . 343.3 Convoluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4 Analisi di Fourier 514.1 Serie di Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2 Trasformata di Fourier per segnali a tempo continuo . . . . . . 564.3 Trasformata di Fourier per segnali a tempo discreto . . . . . . 614.4 Campionamento e aliasing . . . . . . . . . . . . . . . . . . . . 65

3

Page 4: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4 INDICE

5 Sistemi LTI discreti 695.1 Introduzione ai sistemi LTI discreti . . . . . . . . . . . . . . . 695.2 Risposta impulsiva . . . . . . . . . . . . . . . . . . . . . . . . 745.3 Risposta in frequenza . . . . . . . . . . . . . . . . . . . . . . . 775.4 Autofunzioni dei filtri . . . . . . . . . . . . . . . . . . . . . . . 79

6 Sistemi LTI continui 836.1 Equazioni differenziali in Matlab . . . . . . . . . . . . . . . . . 846.2 Studio di sistemi meccanici tramite modelli LTI continui . . . 856.3 Accenni all’uso di Simulink . . . . . . . . . . . . . . . . . . . . 91

Page 5: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 1Introduzione

Questa dispensa contiene il materiale fornito agli studenti per il laboratoriodel corso di Segnali e Sistemi per ingegneria dell’Informazione svolto all’uni-versita di Padova nell’a.a. 2011/2012. L’obiettivo principale del laboratorioe fornire una certa familiarita con lo strumento di calcolo Matlab, il qualee ampiamente usato in contesti ingegneristici e applicativi. L’obbiettivo se-condario, ma non per questo meno importante, e permettere agli studenti diassimilare meglio i concetti fondamentali riguardanti la teoria dei segnali edei sistemi visti a lezione.

Il termine Matlab deriva dall’abbreviazione di MATrix LABoratory. Fucreato alla fine degli anni ’70 da Cleve Moler, il presidente del dipartimento discienze informatiche dell’Universita del Nuovo Messico. Egli creo Matlab perdare ai suoi studenti accesso alle librerie linpack e ad eispack senza che essidovessero conoscere il Fortran. Presto si diffuse nelle altre Universita e trovoun grande pubblico tra la comunita dei matematici applicati. Jack Little, uningegnere, conobbe il programma durante una visita a Moler all’Universitadi Stanford nel 1983. Riconoscendo il suo potenziale commerciale, si unıcon Moler e Steve Bangert. Essi riscrissero Matlab in C e fondarono la TheMathWorks nel 1984 per continuare il suo sviluppo.

Matlab percio e un ambiente per il calcolo numerico e l’analisi statisticache comprende anche l’omonimo linguaggio di programmazione creato dal-la MathWorks. Questo software funziona su diversi sistemi operativi, tracui Windows, Mac OS, GNU/Linux e Unix. Attualmente in commercio edisponibile la versione R2012a.

Infine e doveroso citare, in alternativa a Matlab, il software gratuito Oc-

5

Page 6: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6 CAPITOLO 1. INTRODUZIONE

tave. Il suo vantaggio e che e compatibile quasi completamente con Matlab.

Page 7: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 2Funzionalita basilari di Matlab

2.1 Come si presenta Matlab

Quando il programma viene richiamato appare la schermata di Figura 2.1:

Figura 2.1: Schermata di Matlab

7

Page 8: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

8 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

• Command Window e la sotto-finestra in cui vengono trasmesse le istru-zioni desiderate a Matlab

• WorkSpace visualizza le variabili attualmente create dalle istruzionifornite.

• La cartella di lavoro e la sotto-finestra che visualizza tutti i file contenutinella cartella in cui ha accesso Matlab.

In Figura 2.2 e mostrata la barra dei pulsanti di Matlab. Il primo tastoserve per creare un file Matlab che chiameremo m-file. Il secondo tasto aprela cartella di lavoro. Il quartultimo apre il sottoprogramma Simulink chevedremo in seguito. L’ultimo tasto permette di accedere alla guida in lineadi Matlab. A fianco e possibile selezionare la cartella di lavoro desiderata.

Figura 2.2: Barra dei pulsanti di Matlab

2.2 Command Window

In questa finestra appare un simbolo di attesta seguito da un cursore

>>_

Per fornire una istruzione a Matlab e sufficiente scrivere l’istruzione e premereinvio. Se scriviamo un’istruzione inesistente, Matlab segnala, attraverso unafrase in rosso, che il comando non esiste.

>> fhsj

??? Undefined function or variable ’fhsj ’.

>>

Quando Matlab deve segnalare un errore utilizza sempre il colore rosso, pergli altri messaggi utilizza il nero. I comandi piu semplici e intuitivi riguardanole operazioni di somma, sottrazione, moltiplicazione, divisione ed elevamentoa potenza di numeri reali

Page 9: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 9

>> 6.2+2 -3.02^2*3/2

ans =

-5.4806

>>

La variabile ans contiene il risultato dell’ultima operazione eseguita. Per nonvisualizzare l’echo di un’istruzione e sufficiente scrivere punto e virgola dopol’istruzione

>> 6.2+2 -3.02^2*3/2;

>>

2.2.1 Definizione di oggetti

• Definizione di una variabile reale

a=3;

• Definizione di un numero complesso

>> z=7+i*9

z =

7.0000 + 9.0000i

>>

Va osservato che i e una variable predefinita come√−1 e in quanto

tale puo essere sovrascritta. E buona norma percio non sovrascriverei. Nota bene: anche j e considerata un’unita immaginaria.

• Definizione della variabile stringa s che contiene la parola ciao

>> s=’ciao ’

Page 10: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

10 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

s =

ciao

>>

• Definizione del vettore riga

v =(

1 2 3)

(2.1)

>> v=[1 2 3]

v =

1 2 3

>>

• Definizione del vettore colonna

v =

123

(2.2)

>> v=[1; 2; 3]

v =

1

2

3

>>

Il punto e virgola serve per indicare la fine di una riga.

• Definizione della matrice

A =

(1 2 34 5 6

)(2.3)

Page 11: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 11

>> A=[1 2 3; 4 5 6]

A =

1 2 3

4 5 6

>>

• Generazione del vettore

v =(

5 6 7 8 9 10)

(2.4)

i cui elementi sono equispaziati di 1 in maniera crescente

>> v=5:10

v =

5 6 7 8 9 10

>>

• Generazione del vettore

v =(

0 0.1 0.2 0.3 0.4 0.5 0.6)

(2.5)

i cui elementi sono equispaziati di 0.1 in maniera crescente

>> v=0:0.1:0.6

v =

Columns 1 through 4

0 0.1000 0.2000 0.3000

Columns 5 through 7

Page 12: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

12 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

0.4000 0.5000 0.6000

>>

E possibile anche generare un vettore con elementi equispaziati inmaniera descrescente, ad esempio il vettore

v =(

0 −0.1 −0.2 −0.3 −0.4 −0.5 −0.6)

(2.6)

si genera con il comando

>> v=0: -0.1: -0.6

v =

Columns 1 through 4

0 -0.1000 -0.2000 -0.3000

Columns 5 through 7

-0.4000 -0.5000 -0.6000

>>

2.2.2 Operazioni di base sui vettori

• Somma tra due vettori

u =

(12

), v =

(34

)(2.7)

>> u=[1; 2];

>> v=[3; 4];

>> w=u+v

w =

Page 13: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 13

4

6

>>

• Calcolo del prodotto interno < u, v >= uTv

>> u’*v

ans =

11

>>

• Prodotto tra i vettori u e v componente per componente

>> v.*u

ans =

3

8

>>

Esiste anche l’analogo per la divisione (./) e l’elevamento a potenza (. ).

• Trasposizione del vettore u (solo nel caso in cui u e definito nel camporeale)

>> u’

ans =

1 2

>>

Page 14: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

14 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

NOTA: In generale il comando u’ calcola il trasposto del complessoconiugato del vettore u. Nel campo complesso (ma anche reale) lasemplice trasposizione si ottiene con u.’ (con il punto).

• Selezione dell’elemento j-esimo del vettore

v =(

3 4 5 6)T

(2.8)

>> v=[3; 4; 5; 6];

>> j=2;

>> v(j)

ans =

4

>>

• Selezione di una sottosequenza del vettore

v =(

1.1 2.2 3.3 4.4 5.5 6.6)

(2.9)

secondo gli indici di posizione j, k

>> v=[1.1 2.2 3.3 4.4 5.5 6.6];

>> j=2;

>> k=5;

>> v(j:k)

ans =

2.2000 3.3000 4.4000 5.5000

>>

• Polinomi: in Matlab un polinomio e rappresentato da un vettore (ri-ga o colonna). Per creare un polinomio e sufficiente immettere suoi

Page 15: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 15

coefficienti in un vettore, che chiameremo p, in ordine decrescente. Peresempio, consideriamo

x5 + 10x4 + 0.6x3 + 12x2 − 7x+ 5 (2.10)

>> p=[1 10 0.6 12 -7 5]

p =

Columns 1 through 4

1.0000 10.0000 0.6000 12.0000

Columns 5 through 6

-7.0000 5.0000

>>

2.2.3 Operazioni di base sulle matrici

• Somma tra le due matrici

A =

(1 23 4

), B =

(5 67 8

)(2.11)

>> A=[1 2; 3 4];

>> B=[5 6; 7 8];

>> C=B+A

C =

6 8

10 12

>>

• Prodotto tra le matrici A e B

Page 16: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

16 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

>> D=A*B

D =

19 22

43 50

>>

• Elevamento alla potenza p della matrice A

>> p=2;

>> A^p

ans =

7 10

15 22

>>

Prodotto tra le matrici A e B componente per componente

>> A.*B

ans =

5 12

21 32

>>

Esiste anche l’analogo per la divisione (./) e l’elevamento a potenza (. ).

• Trasposizione della matrice A (solo nel campo reale, vedi la nota sopra)

>> A’

ans =

Page 17: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 17

1 3

2 4

>>

• Accostamento delle matrici A e B

C =(A B

)(2.12)

>> C=[A B]

C =

1 2 5 6

3 4 7 8

>>

• Incolonnamento delle matrici A e B

C =

(AB

)(2.13)

>> C=[A; B]

C =

1 2

3 4

5 6

7 8

>>

• Selezione dell’elemento alla riga j e colonna k di

A =

1 2 3 45 6 7 89 10 11 12

(2.14)

Page 18: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

18 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12];

>> j=2;

>> k=4;

>> A(j,k)

ans =

8

>>

• Selezione della riga j di A

>> A(j,:)

ans =

5 6 7 8

>>

• Selezione della colonna k di A

>> A(:,k)

ans =

4

8

12

>>

• Matrice inversa di A

>> inv(A)

ans =

Page 19: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 19

-2.0000 1.0000

1.5000 -0.5000

>>

• Autovalori di A

>> eig(A)

ans =

-0.3723

5.3723

>>

2.2.4 Funzioni Matlab

Matlab fornisce molte funzioni all’utente. L’argomento delle funzioni, sepresente, e compreso tra parentesi tonde.

Esempio 1. Vogliamo valutare la seguente funzione polinomiale per x = 2

p(x) = x5 − 7x+ 5. (2.15)

In questo caso basta utilizzare la funzione polyval con argomenti di ingressoil corrispondente polinomio e il valore 2. Tale funzione restituisce p(2).

>> p=[1 0 0 0 -7 5];

>> valore=polyval(p,2)

valore =

23

>>

Inoltre non e necessario salvare il valore che restituisce la funzione

Page 20: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

20 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

>> p=[1 0 0 0 -7 5];

>> polyval(p,2)

ans =

23

>>

Per avere informazioni su una funzione Matlab e sufficiente scrivere helpseguito dal nome della funzione

>> help polyval

POLYVAL Evaluate polynomial.

Y = POLYVAL(P,X) returns the value of a

polynomial P evaluated at X. P is a vector of

length N+1 whose elements are the coefficients

of the polynomial in descending powers.

Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X

+ P(N+1)

If X is a matrix or vector , the polynomial is

evaluated at all points in X. See POLYVALM for

evaluation in a matrix sense.

[Y,DELTA] = POLYVAL(P,X,S) uses the optional

output structure S created by POLYFIT to generate

prediction error estimates DELTA. DELTA is an

estimate of the standard deviation of the error

in predicting a future observation at X by P(X).

If the coefficients in P are least squares

estimates computed by POLYFIT , and the errors in

the data input to POLYFIT are independent ,

normal , with constant variance , then Y +/- DELTA

will contain at least 50\% of future observations

at X.

Page 21: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.2. COMMAND WINDOW 21

Y = POLYVAL(P,X,[],MU) or [Y,DELTA] =

POLYVAL(P,X,S,MU) uses XHAT = (X-MU (1))/MU(2) in

place of X. The centering and scaling parameters

MU are optional output computed by POLYFIT.

Class support for inputs P,X,S,MU:

float: double , single

See also polyfit , polyvalm.

Overloaded methods:

gf/polyval

Reference page in Help browser

doc polyval

>>

Esempio 2. Vogliamo calcolare le radici del polinomio

x5 − 7x+ 5. (2.16)

La funzione Matlab che dobbiamo utilizzare e roots. Il parametro d’ingressoe il polinomio e il parametro di uscita e un vettore contente le radici delpolinomio.

>> p=[1 0 0 0 -7 5];

>> roots(p)

ans =

-1.7704

-0.1618 + 1.6671i

-0.1618 - 1.6671i

1.3464

0.7477

Page 22: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

22 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

>>

Riportiamo alcune funzioni Matlab di interesse.

Funzioni costantiFunzione Descrizionepi π

exp(1) numero di Nepero

eps Precisione di Matlab

Funzioni per numeri realiFunzione Descrizioneround(x) Restituisce l’approssimazione intera del numero reale x

rem(x,y) Restituisce il resto della divisione x÷ y

sign(x) Restituisce il segno di x

sqrt(x) Restituisce la radice quadrata di x

sin(x) Restituisce il seno di x

cos(x) Restituisce il coseno di x

tan(x) Restituisce la tangente di x

asin(x) Restituisce l’arcoseno di x

acos(x) Restituisce l’arcocoseno di x

atan(x) Restituisce l’arcotangente di x

log(x) Restituisce il logaritmo di x

log10(x) Restituisce il logaritmo in base dieci di x

Funzioni per numeri complessiFunzione Descrizionereal(z) Restituisce la parte reale del numero complesso z

imag(z) Restituisce la parte immaginaria del numero complesso z

abs(z) Restituisce il modulo del numero complesso z

phase(z) Restituisce la fase di z

conj(z) Restituisce il complesso coniugato di z

exp(z) Restituisce ez

Page 23: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.3. GESTIONE DELLE VARIABILI 23

Funzioni per vettori e matriciFunzione Descrizionelength(v) Restituisce la lunghezza del vettore v

norm(v) Restituisce la norma euclidea di v

sum(v) Restituisce la somma degli elementi di v

wrev(v) Restituisce il vettore che ha gli elementi di v invertiti di ordine

min(v) Restituisce il valore e la posizione dell’elemento piu piccolo di v

max(v) Restituisce il valore e la posizione dell’elemento piu grande di v

zeros(m,1) Genera un vettore di zeri di dimensione m

ones(m,1) Genera un vettore di uno di dimensione m

polyval(p,k) Restituisce il valore p(k) dove p(x) e un polinomio

roots(p) Restituisce le radici del polinomio p(x)

conv(p,q) Restituisce il polinomio risultante dal prodotto dei polinomi p(x), q(x)

2.2.5 Altre istruzioni matlab

Istruzione Descrizionedisp(s) Visualizza l’oggetto s nel Command Window

clc Pulisce la finestra Command Window

num2str(x) Restituisce la variabile stringa che corrisponde alla variabile reale/complessa x

pause Arresta l’inserimento di istruzioni nel Command Window, l’effetto termina premendo INVIO

% Simbolo per i commenti

2.3 Gestione delle variabili

Ogni variabile definita nel Command Window viene memorizzata nel Work-Space. L’istruzione whos permette la visualizzazione delle variabili del Work-Space

>> whos

Name Size Bytes Class Attributes

A 2x4 64 double

ans 1x1 8 double

v 1x7 56 double

>>

L’istruzione clear permette la cancellazione di una o tutte le variabili delWorkSpace

Page 24: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

24 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

>> whos

Name Size Bytes Class Attributes

A 2x4 64 double

ans 1x1 8 double

v 1x7 56 double

>> clear A

>> whos

Name Size Bytes Class Attributes

ans 1x1 8 double

v 1x7 56 double

>> clear all

>> whos

>>

Chiudendo Matlab tutte le variabili del WorkSpace vengono perse. Per sal-vare tutte le variabili del WorkSpace si ricorre all’istruzione save seguita dalnome del file su cui verranno salvate

>> save risultati

>>

dopo questa istruzione Matlab crea il file risultati.mat nella cartella di la-voro. In questa maniera possiamo uscire dall’ambiente Matlab senza perderei nostri dati. Per ricaricare tutte le variabili salvate nel file .mat si utilizza ilcomando load

>> load risultati

>>

2.4 m-files

Finora abbiamo visto come sia possibile utilizzare Matlab tramite la riga dicomando. Puo succedere pero che si vogliano scrivere veri e propri program-mi, cioe una successione di comandi da eseguire uno dopo l’altro in un ordinefissato. In tal caso la successione di comandi deve essere memorizzata in un

Page 25: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.4. M-FILES 25

file chiamato m-file. Per creare un m-file e sufficiente selezionare il primo ta-sto della barra dei pulsanti di Matlab, Figura 2.2. Si aprira un editor, Figura2.3, dove e possibile scrivere la sequenza di istruzioni. Terminata questa fase

Figura 2.3: Editor per gli m-file.

dobbiamo salvare il lavoro. Supponiamo di chiamarlo prova, allora Matlabcreera un file prova.m nella cartella di lavoro. Infine per eseguire la squenzadi istruzioni salvate in prova.m e sufficiente scrivere il nome del file, senzaestensione, nel Command Window

>>prova

>>

Esempio 3. Vogliamo scrivere il programma es3.m che calcola la media ela deviazione standard del vettore

x =(

1 2 3 4)T. (2.17)

1 %%%%%%%%%%%

2 % es3.m %

3 %%%%%%%%%%%

4

5 clear all % cancello il vecchio WorkSpace

6 clc% pulisci lo schermo

7 x=[1 2 3 4];

Page 26: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

26 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

8 media=sum(x)/ length(x);

9 diff=x-media; % vettore differenza

10 dev_std=sqrt(sum(diff .^2)/ length(x));

11 disp([’Media ’ num2str(media )]) %stampo risultati

12 disp([’Deviazione standard ’ num2str(dev_std )])

Eseguendo es3.m otteniamo

Media 2.5 Deviazione standard 1.118

>>

Esempio 4. Vogliamo creare il programma es4.m che salva i due vettori

u =(

4 7 9)T, v =

(0 1 3

)T(2.18)

nel file dati.mat

1 %%%%%%%%%%%

2 % es4.m %

3 %%%%%%%%%%%

4

5 clear all

6 u=[4 7 9]’; %genero i vettori u,v

7 v=[0; 1; 3];

8 save dati % salvo le variabili del WorkSpace

Esempio 5. Utilizzando i vettori dell’esercizio precedente, calcolare uTv

1 %%%%%%%%%%%

2 % es5.m %

3 %%%%%%%%%%%

4

5 clear all %cancello tutte le variabili WorkSpace

6 load dati %carico il vecchio WorkSpace

7 u’*v

2.5 Strutture di controllo

Oltre agli operatori aritmetici esistono gli operatori relazionali <, >, ==, <=,>=, ~= che corrispondono ai simboli matematici <,>,=,≤,≥, 6=. Mediante

Page 27: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.5. STRUTTURE DI CONTROLLO 27

questi operatori si possono scrivere delle relazioni che possono essere vere ofalse. Il valore vero viene indicato da Matlab con 1, mentre il valore falsoviene indicato con 0.

• Struttura if

1 if [condizione]

2 [istruzioni]

3 else

4 [istruzioni]

5 end

• Struttura for

1 for j=min:max

2 [istruzioni]

3 end

• Struttura while

1 while [condizione]

2 [istruzioni]

3 end

Esempio 6. Scrivere un programma che somma due polinomi p(x), q(x). Te-nere conto del fatto che i due polinomi possono avere grado diverso (e di con-seguenza i corrispondenti vettori possono avere lunghezze diverse). Testareil programma con i seguenti polinomi

p(x) = x3 + 1

q(x) = x2 + 7x− 3. (2.19)

1 %%%%%%%%%%%

2 % es6.m %

3 %%%%%%%%%%%

4

5 clear all

6 clc %pulisci lo schermo

7 p=[1 0 0 1]; %polinomi da sommare

Page 28: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

28 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

8 q=[2 7 -3];

9 if length(p)<length(q)

10 corto=p;

11 lungo=q;

12 else

13 corto=q;

14 lungo=p;

15 end

16 diff=length(lungo)-length(corto);

17 if diff >0

18 somma=[zeros(1,diff) corto]+lungo; %aggiungi zeri al polinomio

19 %piu ’ corto

20 else

21 somma=corto+lungo;

22 end

23 disp(’Polinomio somma ’)

24 somma

Esempio 7. Scrivere un programma che stampa il quadrato dei primi diecinumeri interi. Fare in modo che ogni numero venga stampato dopo chel’utente ha digitato INVIO.

1 %%%%%%%%%%%

2 % es7.m %

3 %%%%%%%%%%%

4

5 clear all

6 clc %pulisci finestra Command Window

7 for n=1:10

8 disp(n^2)

9 pause

10 end

Esempio 8. Scrivere lo stesso programma dell’Esempio 7 utilizzando il con-trollo while.

1 %%%%%%%%%%%

2 % es8.m %

3 %%%%%%%%%%%

Page 29: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.6. GRAFICI 29

4

5 clear all

6 clc %pulisci finestra Command Window

7 n=1;

8 while n<=10

9 disp(n^2)

10 n=n+1;

11 pause

12 end

2.6 Grafici

Matlab fornisce anche funzioni grafiche. Consideriamo un segnale definito suun dominio D ⊂ R

y = f(t), t ∈ D. (2.20)

Per disegnare tale segnale su carta:

• prendiamo un numero finito di punti t1, . . . tn contenuti in D, equispa-ziati secondo una prescelta quantita T

• calcoliamo i corrispondenti y1, . . . yn con yi = f(ti)

• disegniamo i punti sul piano cartesiano e infine li uniamo secondo unopportuno criterio.

Detto in maniera piu formale: campioniamo il segnale con passo di campio-namento pari a T e poi lo interpoliamo linearmente. Il concetto e lo stessoper stampare in Matlab tale segnale. Consideriamo il vettore

t =(t1 . . . tn

)T, ti ∈ D, (2.21)

calcoliamoy =

(f(t1) . . . f(tn)

)T. (2.22)

Infine utilizziamo la funzione plot passandole i vettori t e y.

Esempio 9. Stampare il segnale

f(t) = sin

(2π

5t− 0.1

), t ∈ [0, 10] (2.23)

con passo di campionamento pari a T = 0.02.

Page 30: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

30 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

1 %%%%%%%%%%%

2 % es9.m %

3 %%%%%%%%%%%

4

5 clear all

6 T=0.02; %passo di campionamento

7 t=0:T:10; % crea il vettore t

8 for j=1: length(t) % crea il vettore y

9 y(j)=sin(2*pi/5*t(j) -0.1);

10 end

11 plot(t,y)

12 xlabel(’t’) % nome asse x

13 ylabel(’f(t)’) % nome asse y

14 axis ([0 10, -1 1 ]) % assi del grafico

15 grid on % griglia grafico

Eseguendo il programma otteniamo il grafico di Figura 2.4. Matlab oltre alla

Figura 2.4: Grafico dell’Esempio 9

figura fornisce una serie utility grafiche: salva figura, zoom grafico, esploragrafico, datatip. Osserviamo che in questo m-file ci sono delle nuove funzionidi Matlab. Nella seguente tabella ne riportiamo la descrizione.

Page 31: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

2.6. GRAFICI 31

Funzione Descrizionefigure Apre una nuova finestra per stampare grafici

close all Chiude tutte le finestre dei grafici aperte

grid on Mostra la griglia nel grafico

grid off Non mostra la griglia nel grafico (default)

xlabel(s) Chiama l’asse x con la variabile stringa s

ylabel(s) Chiama l’asse y con la variabile stringa s

legend() Istruzione per la legenda del grafico

title(s) Intitola il grafico usando la variabile stringa s

axis([x1 x2,y1 y3]) Imposta gli assi del grafico secondo (x1, x2) e (y1, y2)

hold on Permette di sovrapporre piu grafici nella stessa finestra

hold off Permette di stampare solo un grafico nella finestra (default)

plot Istruzione per stampare segnali a tempo continuo

stem Istruzione per stampare segnali a tempo discreto

Esercizio 1. Consideriamo il segnale dell’Esempio 9. Ripetere l’esempio conT = 0.8 e T = 2. Commentare i grafici trovati.

Esercizio 2. Stampare il segnale

f(t) = e−0.01t sin(0.4t), t ∈ [0, 100]. (2.24)

Scegliere in maniera opportuna il passo di campionamento.

Esempio 10. Stampare su due figure differenti i segnali

f(t) = cos(2t), t ∈ [0, 50]

g(t) = e−0.1t cos(2t), t ∈ [0, 50] (2.25)

con passo di campionamento pari a T = 0.02.

1 %%%%%%%%%%%%

2 % es10.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all % chiudo tutte le finiestre aperte

7 T=0.02; %passo di campionamento

8 t=0:T:50; % crea il vettore t

9 y=cos(2*t); % crea il vettore per f

Page 32: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

32 CAPITOLO 2. FUNZIONALITA BASILARI DI MATLAB

10 z=exp( -0.1*t).*cos(2*t); % crea il vettore per g

11 plot(t,y) %stampo il primo grafico

12 xlabel(’t’) % nome asse x

13 ylabel(’f(t)’) % nome asse y

14 title(’primo grafico ’) % titolo grafico

15 figure %apro una nuova figura

16 plot(t,z,’r’) %stampo il secondo grafico

17 xlabel(’t’) % nome asse x

18 ylabel(’g(t)’) % nome asse y

19 title(’secondo grafico ’) % titolo grafico

In questo caso abbiamo abbiamo utilizzato una scrittura molto piu compattae veloce per creare il vettore y. La funzione cos accetta come parametro diingresso anche un vettore e restituisce il corrispondente vettore y. Vale lastessa cosa per exp e tutte le altre funzioni analoghe di Matlab. Osserviamoche l’istruzione plot prevede un terzo parametro opzionale per specificare ilcolore del segnale: r,b,c,k,g corrispondono a rosso, blu, ciano, nero, verde.

Esercizio 3. Facendo riferimento all’Esempio 10, vedere cosa succede quan-do:

• tolgo la riga quindici

• sostituisco la riga quindici con hold on.

Page 33: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 3Segnali e convoluzioni

3.1 Segnali pari e dispari, segnali complessi

Iniziamo ad applicare le funzionalita di Matlab calcolando la parte pari edispari di un segnale.

Esempio 11. Scrivere un programma che stampa il segnale

f(t) = esin(2t), t ∈ [−5, 5], (3.1)

la sua parte pari e dispari (il tutto sullo stesso grafico).

1 %%%%%%%%%%%%

2 % es11.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=0.02; %passo di campionamento

9 t=-5:T:5; % crea il vettore t

10 y=exp(sin(2*t));

11 y_rib=wrev(y); % creo il vettore per la funzione

12 % ribaltata

13 y_pari =0.5*(y+y_rib ); %vettore parte pari

14 y_disp =0.5*(y-y_rib ); %vettore parte dispari

33

Page 34: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

34 CAPITOLO 3. SEGNALI E CONVOLUZIONI

15 plot(t,y) % grafici

16 hold on

17 plot(t,y_pari ,’r’)

18 plot(t,y_disp ,’g’)

19 xlabel(’t’)

20 legend(’f(t)’,’parte pari’,’parte dispari ’) %legenda

21 grid on

In Figura 3.1 e mostrato il grafico che stampa Matlab.

−5 −4 −3 −2 −1 0 1 2 3 4 5−1.5

−1

−0.5

0

0.5

1

1.5

2

2.5

3

t

f(t)parte pariparte dispari

Figura 3.1: Grafico dell’Esempio 11

Esercizio 4. Stampare la parte reale e immaginaria del segnale complesso

f(t) = ej2πft, t ∈ [0, 0.5] (3.2)

con f = 0.1.

3.2 Area ed energia di un segnale

In questa sezione vediamo come calcolare l’area e l’energia (e quindi ancheil valore medio e la potenza) di un dato segnale. Iniziamo con i segnali atempo continuo.

Page 35: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.2. AREA ED ENERGIA DI UN SEGNALE 35

Esempio 12. Scrivere un programma che stampa il segnale

f(t) = sinc(t), t ∈ R (3.3)

e ne calcola l’area.

Chiaramente possiamo solo stampare il segnale su un sotto-intervallo limi-tato di R, per esempio su [−M,M ] con M sufficientemente grande. ScegliamoM = 1000 e T = 0.02. Sapendo che

∫ +∞−∞ sinc(t)dt esiste, e lecito considerare

la seguente approssimazione

∫ ∞−∞

sinc(t)dt 'MT∑

k=−MT

T sinc(kT ), (k ∈ Z). (3.4)

Infine utilizziamo la funzione sinc di Matlab.

1 %%%%%%%%%%%%

2 % es12.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=0.02; %passo di campionamento

9 M=1000;

10 t=-M:T:M; % crea il vettore t

11 y=sinc(t);

12 plot(t,y) %stampa grafico

13 xlabel(’t’)

14 ylabel(’f(t)’)

15 grid on

16 area=T*sum(y);%calcola area

17 disp([’Area del sinc: ’ num2str(area )])

Esempio 13. Scrivere un programma che stampa il segnale periodico (su unperiodo)

f(t) = sin3(t), t ∈ R (3.5)

e ne calcola l’energia.

Page 36: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

36 CAPITOLO 3. SEGNALI E CONVOLUZIONI

La periodicita del segnale e Tp = 2π. Sapendo che∫ 2π

0|f(t)|2dt esiste ed

e finito, per calcolare l’energia e lecita l’approssimazione

∫ Tp

0

|f(t)|2dt 'bTpTc∑

k=0

T |f(kT )|2, k ∈ Z (3.6)

dove T e il passo di campionamento.

1 %%%%%%%%%%%%

2 % es13.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=0.02; %passo di campionamento

9 Tp=2*pi; %periodicita ’

10 t=0:T:Tp; % crea il vettore t

11 y=sin(t).^3;

12 plot(t,y) %stampa grafico

13 xlabel(’t’)

14 ylabel(’f(t)’)

15 grid on

16 E=T*sum(y.^2);%calcola energia

17 disp([’Energia della funzione: ’ num2str(E)])

Esercizio 5. Consideriamo il segnale dell’Esempio 13. Calcolarne l’area, ilvalore medio e la potenza.

Ora prendiamo in considerazione i segnali a tempo discreto.

Esempio 14. Scrivere un programma che stampa il segnale a dominio di-screto

f(nT ) = e−0.02nT sin(nT ), n ≥ 0 (3.7)

con T = 1 e ne calcola l’energia.

1 %%%%%%%%%%%%

2 % es14.m %

Page 37: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.2. AREA ED ENERGIA DI UN SEGNALE 37

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=1; %passo di campionamento

9 M=200;

10 n=0:M; % crea il vettore n

11 y=exp ( -0.02*n*T).*sin(n*T);

12 stem(n,y) %stampa grafico

13 xlabel(’n’)

14 ylabel(’f(nT)’)

15 E=T*sum(y.^2);%calcola energia

16 disp([’Energia del segnale: ’ num2str(E)])

Esercizio 6. Consideriamo il segnale dell’Esempio 12. Calcolarne il valoremedio, l’energia e la potenza.

Esercizio 7. Consideriamo il segnale dell’Esempio 14. Calcolarne l’area, ilvalore medio e la potenza.

Esempio 15. Consideriamo il segnale periodico a dominio discreto

f(nT ) = sin

(2πnT

Tp

), n ∈ Z (3.8)

con T = 0.05 e TP = 2. Stampare f su un periodo e calcolarne l’area.

1 %%%%%%%%%%%%

2 % es15.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=0.05; %passo di campionamento

9 Tp=2; %periodicita ’

10 n=0:Tp/T; % crea il vettore n

11 y=sin(2*pi*n*T/Tp);

12 stem(n,y) %stampa grafico

Page 38: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

38 CAPITOLO 3. SEGNALI E CONVOLUZIONI

13 xlabel(’n’)

14 ylabel(’f(nT)’)

15 A=T*sum(y);% calcolo area

16 disp([’Area del segnale: ’ num2str(A)])

In Figura 3.2 e mostrato il grafico che stampa Matlab.

0 5 10 15 20 25 30 35 40−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

n

f(nT

)

Figura 3.2: Grafico dell’Esempio 15

Esercizio 8. Consideriamo il segnale dell’Esempio 15. Calcolarne l’energia.

3.3 Convoluzione

In questa sezione introduciamo il calcolo di convoluzioni con Matlab. Persemplicita d’esposizione, considereremo per primo il caso di segnali discretia supporto limitato.

Consideriamo due segnali a(n) e b(n). Sappiamo dalla teoria che la loroconvoluzione e definita come

a ∗ b(n) =+∞∑

k=−∞

b(n− k)a(k). (3.9)

Il codice seguente illustra l’uso del comando conv per il calcolo della convo-luzione. I grafici prodotti, riportati in Figura 3.3 e Figura 3.4, ne illustranoil meccanismo. Il risultato e illustrato in Figura 3.5.

Page 39: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 39

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 %% Convoluzione di segnali discreti a supporto limitato %%

3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4

5 close all % chiude le finestre figura aperte

6 clc % pulisce la command window

7

8 % Segnali a e b

9 a = [1 2 -1 3];

10 x_a = 0:3; % supporto di a

11

12 b = [-1 3 -5];

13 x_b = 0:2; % supporto di b

14

15 % Segnale ottenuto ribaltando b

16 b_meno = fliplr(b);

17 x_b_meno = - fliplr(x_b); % supporto di b_meno

18

19 %% Grafici dei segnali di interesse

20 figure , title(’Segnali di interesse ’)

21 subplot (131)

22 stem(x_a ,a,’LineWidth ’ ,2)

23 axis([-4 6 -5 3 ])

24 legend(’a(n)’)

25 grid on;

26

27 subplot (132)

28 stem(x_b ,b,’LineWidth ’ ,2)

29 axis([-4 6 -5 3 ])

30 legend(’b(n)’)

31 grid on;

32

33 subplot (133)

34 stem(x_b_meno ,b_meno ,’r’,’LineWidth ’ ,2)

35 axis([-4 6 -5 3 ])

36 legend(’b_{-}(n)’)

37 grid on;

38

Page 40: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

40 CAPITOLO 3. SEGNALI E CONVOLUZIONI

39 %% Rappresentazione grafica della convoluzione

40 figure , title(’Convoluzione a*b’)

41 n_c = length(a) + length(b) -1 ;

42

43 c = conv(a,b);

44

45 for i = 0:n_c -1

46 subplot (3,2,i+1)

47 stem(x_a ,a,’LineWidth ’ ,2)

48 hold on

49 stem(x_b_meno + i, b_meno ,’r’,’LineWidth ’ ,2)

50 axis([-4 6 -5 3 ])

51 set(gca ,’YTick’ ,-4:3)

52 title([’c(’,num2str(i),’) = ’,num2str(c(i+1))])

53 grid on;

54 end

55

56 %% Grafico della convoluzione c = a*b

57 figure

58 stem(c,’b’,’LineWidth ’ ,2)

59 title(’c(n)’)

60 grid on;

Consideriamo ora un esempio di convoluzione tra segnali continui. Sianodati i segnali rettangolari f(t) e g(t) definiti come

f(t) = Af rect

(t− tfDf

),

g(t) = Agrect

(t− tgDg

).

La convoluzione per segnali continui e definita come

f ∗ g(t) :=

∫ +∞

−∞f(t− τ)g(τ) dτ.

Nel caso di interesse, l’integrale esiste. Quindi, scegliendo un periodo dicampionamento T sufficientemente piccolo, possiamo scrivere

f ∗ g(t) =

∫ +∞

−∞f(t− τ)g(τ) dτ ≈ T

+∞∑k=−∞

f(t− kT )g(kT ).

Page 41: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 41

Figura 3.3: Segnali convolvendi a(n) e b(n) (in blu) e versione ribaltata dib(n) (in rosso).

Figura 3.4: Calcolo della convoluzione c(n) := a ∗ b(n)

Page 42: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

42 CAPITOLO 3. SEGNALI E CONVOLUZIONI

Figura 3.5: Calcolo della convoluzione c(n) := a ∗ b(n)

Questa approssimazione ci permette di ricondurci al caso discreto, nel qualepossiamo ricorrere al comando conv di Matlab.

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 %% Convoluzione di segnali continui a supporto limitato %%

3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4

5 % Calcoliamo con Matlab una versione approssimata della

6 % convoluzione dei segnali continui

7

8 % f(t) = A_f * rect((t-t_f)/D_f)

9 % g(t) = A_g * rect((t-t_g)/D_g)

10

11 %% Segnali di interesse

12

13 clc

14 close all

15

16 % Parametri che definiscono i segnali

17

18 A_f = 1;

19 A_g = 1;

20

21 t_f = 2;

Page 43: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 43

22 t_g = 3;

23

24 D_f = 5;

25 D_g = 1;

26

27 % Approssimazione discreta

28 T = 0.001;

29 x = -5:T:5;

30

31 f = zeros(size(x));

32 f_inizio = find(x==t_f -0.5* D_f);

33 f_fine = find(x==t_f +0.5* D_f);

34 f(f_inizio:f_fine) = A_f;

35

36 g = zeros(size(x));

37 g_inizio = find(x==t_g -0.5* D_g);

38 g_fine = find(x==t_g +0.5* D_g);

39 g(g_inizio:g_fine) = A_g;

40

41 g_meno = fliplr(g);

42 x_g_meno = -fliplr(x);

43

44 %% Grafici

45 subplot (131)

46 plot(x,f,’LineWidth ’ ,2);

47 legend(’f’)

48 grid on

49 axis([-5 5 0 1.4]);

50

51 subplot (132)

52 plot(x,g,’LineWidth ’ ,2);

53 legend(’g’)

54 grid on

55 axis([-5 5 0 1.4]);

56

57 subplot (133)

58 plot(x_g_meno ,g_meno ,’r’,’LineWidth ’ ,2);

59 legend(’g_{-}’)

Page 44: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

44 CAPITOLO 3. SEGNALI E CONVOLUZIONI

Figura 3.6: Segnali convolvendi f(t) e g(t) (in blu) e versione ribaltata dig(t) (in rosso)

60 grid on

61 axis([-5 5 0 1.4]);

62

63 %% Convoluzione (approssimazione discreta)

64 % Attenzione a moltiplicare per il passo di campionamento

65 conv_fg = T*conv(f,g);

66 x_conv = -10:T:10;

67 figure , plot(x_conv ,conv_fg ,’b’,’LineWidth ’ ,2)

68 legend(’conv(f,g)’)

69 grid on

In Figura 3.6 e Figura 3.7 sono riportati rispettivamente i segnali f(t) e g(t)e la loro convoluzione, nel caso Af = Ag = 1, tf = 2, tg = 3 e Df = 5,Dg = 1.

Page 45: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 45

Figura 3.7: Grafico di f ∗ g(t) per Af = Ag = 1, tf = 2, tg = 3 e Df = 5,Dg = 1.

Prendiamo ora in considerazione la risposta y di un sistema lineare (tempoinvariante) ad un ingresso generico x. Dalla teoria sappiamo che y e laconvoluzione tra risposta impulsiva h e l’ingresso x.

Esempio 16. Consideriamo un filtro lineare, causale con risposta impulsiva

h(t) = eαt + eαt, t ≥ 0. (3.10)

Supponiamo di alimentare il filtro con un gradino unitario x all’istante ze-ro. Stampare la risposta impulsiva e la risposta y al gradino unitario per iseguenti valori di α:

α = −0.4 + j0.6

α = j0.6

α = 0.04 + j0.6. (3.11)

Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita dei sistemi.

Sappiamo che

y(t) =

∫ +∞

−∞h(t− τ)x(τ)dτ =

∫ t

0

h(t− τ)x(τ)dτ. (3.12)

Page 46: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

46 CAPITOLO 3. SEGNALI E CONVOLUZIONI

Sotto ipotesi simili a quelle dell’Esempio 12, fissando un T sufficientementepiccolo abbiamo la seguente approssimazione

y(t) ' T

b tTc∑

k=0

h(t− kT )x(kT ). (3.13)

In altre parole possiamo approssimare y come il risultato di una convoluzionediscreta. In Matlab la funzione di convoluzione discreta e conv(x,h).

1 %%%%%%%%%%%%

2 % es16.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 T=0.001;

9 alpha =-0.4+j*0.6;

10 % alpha=j*0.6;

11 % alpha =0.04+j*0.6;

12 t=0:T:30;

13 h=exp(alpha*t)+exp(conj(alpha)*t);

14 plot(t,h) % stampa risposta impulsiva

15 title(’risposta impulsiva ’)

16 x=ones(1,length(t)); %ingresso

17 y=T*conv(x,h); %uscita del filtro

18 y=[y(1: length(t))];%riaggiustamento del vettore

19 figure

20 plot(t,y)

21 title(’uscita del filtro ’)

Nella Figura 3.8 sono mostrate le risposte al gradino per i diversi α. La va-lutazione e i commenti riguardanti la stabilita vengono lasciati allo studente.

Esercizio 9. Consideriamo un filtro lineare, causale con risposta impulsiva

h(t) = eα1t + eα1t + eα2t + eα2t, t ≥ 0. (3.14)

Supponiamo di alimentare il filtro con un gradino unitario x all’istante ze-ro. Calcolare la risposta impulsiva e la risposta y al gradino unitario per i

Page 47: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 47

Figura 3.8: Risposte al gradino unitario del filtro dell’Esempio 16

seguenti valori di α1 e α2:

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

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

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

α1 = j0.6, α2 = j0.6

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

α1 = 0.04 + j0.6, α2 = 0.04 + j0.6. (3.15)

Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita dei sistemi.

Esempio 17. Consideriamo un filtro lineare discreto, causale con rispostaimpulsiva

h(n) = αn + αn, n ≥ 0. (3.16)

Supponiamo di alimentare il filtro con un gradino unitario discreto x all’i-stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per iseguenti valori di α:

α = 0.8 + j0.4

α = 0.8 + j0.6

α = 0.8 + j0.63. (3.17)

Page 48: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

48 CAPITOLO 3. SEGNALI E CONVOLUZIONI

Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita dei sistemi.Sappiamo che

y(n) =+∞∑

k=−∞

h(n− k)x(k) =n∑k=0

h(n− k)x(k). (3.18)

Anche in questo caso utilizziamo la funzione conv.

1 %%%%%%%%%%%%

2 % es17.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 alpha =0.8+j*0.4;

9 % alpha =0.8+j*0.6;

10 % alpha =0.8+j*0.63;

11 n=0:1:80;

12 h=alpha.^n+conj(alpha ).^n;

13 % stem(t,h) % stampa risposta impulsiva

14 % title(’risposta impulsiva ’)

15 x=ones(1,length(n)); %ingresso

16 y=conv(x,h); %uscita del filtro

17 y=[y(1: length(n))];%riaggiustamento del vettore

18 % figure

19 stem(n,y)

20 title(’uscita del filtro ’)

Nella Figura 3.9 sono mostrate le risposte al gradino per i diversi α. La va-lutazione e i commenti riguardanti la stabilita vengono lasciati allo studente.

Esercizio 10. Consideriamo un filtro lineare discreto, causale con rispostaimpulsiva

h(n) = αn1 + αn1 + αn2 + αn2 , n ≥ 0. (3.19)

Supponiamo di alimentare il filtro con un gradino unitario discreto x all’i-stante zero. Calcolare la risposta impulsiva e la risposta y al gradino x per i

Page 49: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

3.3. CONVOLUZIONE 49

Figura 3.9: Risposte al gradino unitario del filtro dell’Esempio 17

seguenti valori di α1 e α2:

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

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

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

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

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

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

Guardando le risposte impulsive e le corrispondenti risposte al gradino, di-scutere la stabilita dei sistemi.

Page 50: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

50 CAPITOLO 3. SEGNALI E CONVOLUZIONI

Page 51: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 4Analisi di Fourier

In questo capitolo affrontiamo il problema del calcolo delle serie e delletrasformate di Fourier in Matlab.

4.1 Serie di Fourier

In questa sezione parleremo della serie di Fourier. Dato un segnale periodicox(t) di periodo Tp a energia finita sul periodo, possiamo sempre esprimerlocome

x(t) =+∞∑

k=−∞

akej2πkFt (4.1)

dove

ak =1

Tp

∫ Tp

0

x(t)e−j2πkFtdt, F =1

Tp. (4.2)

Esempio 18. Considerare lo sviluppo in serie di Fourier di un’onda quadra

x(t) = A0repTprect

(t

dTp

)(4.3)

con duty cycle d = 0.3, periodo Tp = 2 e ampiezza A0 = 7. Illustrare l’effettoGibbs troncando lo sviluppo a N = 10, 30, 50 armoniche.In questo caso e facile vedere che

ak = A0dsinc(kd). (4.4)

51

Page 52: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

52 CAPITOLO 4. ANALISI DI FOURIER

1 %%%%%%%%%%%%

2 % es18.m %

3 %%%%%%%%%%%%

4

5 % Serie di Fourier troncata del segnale

6 % x(t) = rep_Tp A0 rect(t/(dTp))

7

8 close all

9

10 Tp=2; % Tempo di campionamento

11 d=0.3; % Duty cycle

12 A0=7; % Ampiezza del segnale rect

13

14 % Numero di armoniche considerate nel troncamento

15 N=10;

16 % N=30;

17 % N=50;

18

19 %calcolo dei coefficienti di Fourier

20 a0=A0*d*sinc (0);

21 for k=1:N

22 a_piu(k)=A0*d*sinc(k*d); % a_n per n>0

23 a_meno(k)=A0*d*sinc(-k*d); % a_n per n<0

24 end

25

26 %calcolo della serie di Fourier

27 t=0:0.01:3;

28 F = 1/Tp;

29 x=a0*ones(1,length(t));

30 for k=1:N

31 x=x+a_meno(k)*exp(-1i*k*2*pi*F*t)+...

32 a_piu(k)*exp(1i*k*2*pi*F*t);

33 end

34

35 %stampa segnale

36 plot(t,x)

In Figura 4.1 sono mostrate le corrispondenti serie troncate.

Page 53: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.1. SERIE DI FOURIER 53

0 0.5 1 1.5 2 2.5 3−1

0

1

2

3

4

5

6

7

8

N=10N=30N=50

Figura 4.1: Serie di Fourier troncate dell’Esempio 18

Esempio 19. Consideriamo la serie di Fourier

x(t) = 2+∞∑k=1

(−1)k−1 1

ksin(kt), t ∈ R. (4.5)

Stampare la corrispondente serie di Fourier troncata per N = 10, 30, 50.

1 %%%%%%%%%%%%

2 % es19.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 N=10;

8 % N=30;

9 % N=50;

10 %calcolo della serie di Fourier

11 t=0:0.01:20;

12 x=zeros(1,length(t));

13 for k=1:N

14 x=x+2*( -1)^(k-1)/k*sin(k*t);

15 end

16 %stampa segnale

Page 54: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

54 CAPITOLO 4. ANALISI DI FOURIER

17 plot(t,x)

0 2 4 6 8 10 12 14 16 18 20−4

−3

−2

−1

0

1

2

3

4

N=10N=30N=50

Figura 4.2: Serie di Fourier troncate dell’Esempio 19

In Figura 4.2 sono mostrate le corrispondenti serie troncate.

Esercizio 11. Consideriamo il segnale, periodico di periodo Tp = 2, cosıdefinito per t ∈ [0, 2):

x(t) =

{2(1− t), 0 ≤ t < 12, 1 ≤ t < 2.

(4.6)

Stampare la corrispondente serie di Fourier troncata per N = 10, 30, 50.

Svolgimento.

1 %%%%%%%%%%%%%%%%%%%%%%%

2 % ex11.m %

3 %%%%%%%%%%%%%%%%%%%%%%%

4

5 close all

6

7 Tp = 2; %Periodo del segnale

8 T = 0.01; % Discretizzazione

Page 55: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.1. SERIE DI FOURIER 55

9 t = 0:T:Tp;

10 % segnale

11 st = zeros(1,length(t));

12 for i = 1: length(t)

13 if(t(i) < 1)

14 st(i) = 2*(1-t(i));

15 else

16 st(i)=2;

17 end

18 end

19 figure;

20 plot(t,st,’LineWidth ’ ,2);

21 title(’Segnale originale su un periodo ’)

22 grid on;

23 axis ([0 2 -1 3]);

24

25 %% Serie di Fourier

26 %N = 10;

27 N = 30;

28 %N = 50;

29 sk = zeros(1,N);

30 sk_ = zeros(1,N);

31 q = 1:N;

32 for k= 1: length(t)

33 sk = sk + T*1/Tp*st(k)*exp(-1i*2*pi*q*t(k)/Tp);

34 sk_ = sk_ + T*1/Tp*st(k)*exp(1i*2*pi*q*t(k)/Tp);

35 end

36 figure;

37 stem (1:N,sk,’r’,’LineWidth ’ ,2);

38 grid on;

39 title(’Coefficienti della serie di Fourier ’)

40

41 %% Ricostruzione del segnale mediante la serie troncata

42 x = T*1/2* sum(st)*ones(1,length(t));

43 for k = 1:N

44 x = x + sk(k)*exp(1i*2*pi*q(k)*t/2)+...

45 sk_(k)*exp(-1i*2*pi*q(k)*t/2);

46 end

Page 56: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

56 CAPITOLO 4. ANALISI DI FOURIER

47 figure;

48 plot(t,st,’--’,’LineWidth ’ ,2)

49 hold on

50 plot(t,x,’LineWidth ’ ,2);

51 grid on;

52 legend(’Segnale originale ’ ,...

53 [’Segnale ricostruito , N=’,num2str(N)])

54 axis ([0 2 -1 3]);

Esercizio 11 Bis. Consideriamo la serie di Fourier

x(t) =∞∑

k=−∞

akejkt (4.7)

dove

ak =

{0, k, pari− 2πk2 , k dispari.

. (4.8)

Stampare la corrispondente serie di Fourier troncata per N = 1, 2, 3, 10, 30.

4.2 Trasformata di Fourier per segnali a tem-

po continuo

Dato un segnale x(t) a tempo continuo, la corrispondente trasformata diFourier e definita come

X(f) =

∫ +∞

−∞x(t)e−j2πftdt, f ∈ R (4.9)

Se il precedente integrale esiste ed e finito, allora e lecita la seguente appros-simazione

X(f) ' T

MT∑

k=−MT

x(kT )e−j2πkfT , f ∈ R, (4.10)

dove T e il passo di campionamento e M e un numero sufficientemente eleva-to. Inoltre per rappresentare X(f) dobbiamo anche campionare la frequenza,per cui otteniamo

X(nF ) ' T

MT∑

k=−MT

x(kT )e−j2πknFT , n ∈ Z (4.11)

Page 57: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.2. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO CONTINUO57

dove F e una quantita sufficientemente piccola.

Proprieta della trasformata di Fourier

Ricordiamo le proprieta fondamentali della trasformata di Fourier nella se-guente tabella.

segnale trasformataLinearita αs1(t) + βs2(t) αS1(f) + βS2(f)Simmetria S(t) s(−f)Ribaltamento delle coordinate s(−t) S(−f)Coniugio nel tempo s∗(t) S∗(−f)Coniugio in frequenza s∗(−t) S∗(f)Traslazione nel tempo s(t− t0) S(f)e−j2πft0

Traslazione in frequenza s(t)ej2πft0 S(f − f0)Convoluzione nel tempo x ∗ y(t) X(f)Y (f)Convoluzione in frequenza x(t)y(t) X ∗ Y (f)

Cambio di scala s(at) 1|a|S(f

a)

Area del segnale nel tempo area(s) S(0)Area del segnale in frequenza s(0) area(S)

Energia del segnale Es =∫ +∞−∞ |s(t)|

2dt ES =∫ +∞−∞ |S(f)|2df

Testiamo alcune delle proprieta sopra elencate:

1 % Test sulla Trasformata di Fourier

2

3 close all , clc

4

5 % campionamento di tempo e frequenza

6 T = 0.01;

7 F = 0.01;

8 M = 20;

9 t = -M:T:M;

10 N = 5;

11

12 % segnale s_1

13 s_1 = 3*sinc(t);

14 figure

Page 58: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

58 CAPITOLO 4. ANALISI DI FOURIER

15 plot(t,s_1 ,’b’,’LineWidth ’ ,2)

16 legend(’s_1(t)= 3sinc(t)’)

17 grid on

18 %% Traslazione in frequenza

19 f = -N:F:N;

20 S_1 = zeros(1,length(f));

21 for i=1: length(f)

22 S_1(i) = T * s_1 * exp(-1i*2*pi*f(i)*t).’;

23 end

24 figure , plot(f,real(S_1),’LineWidth ’ ,2)

25 grid on

26 hold on

27

28 pause

29

30 % segnale moltiplicato nel tempo per un esponenziale complesso

31 f_0 = 2;

32 s_1_e = s_1.*exp(1i*2*pi*f_0*t);

33 S_1_t = zeros(1,length(f));

34 for i=1: length(f)

35 S_1_t(i) = T * s_1_e * exp(-1i*2*pi*f(i)*t).’;

36 end

37 plot(f,real(S_1_t),’r -.’,’LineWidth ’ ,2)

38 legend(’S_1(f)’,’S_1(f-f_0)’)

39

40 pause

41

42 % Modulazione

43 s_1_cos = s_1.*cos (2*pi*f_0*t);

44 S_1_mod = zeros(1,length(f));

45 for i=1: length(f)

46 S_1_mod(i) = T * s_1_cos * exp(-1i*2*pi*f(i)*t).’;

47 end

48 plot(f,real(S_1_mod),’k --’,’LineWidth ’ ,2)

49 legend(’S_1(f)’,’S_1(f-f_0)’,’Modulazione in coseno ’)

50

51 %% Area del segnale

52

Page 59: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.2. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO CONTINUO59

53 % s_1 = 3*sinc(t)

54

55 % calcolo approssimato dell ’area:

56 Area_approssimata = T*sum(s_1)

57

58 % Dalla teoria sappiamo che

59 % s(t) = 3sinc(t) --> S(f)=3 rect(f)

60

61 S_0 = 3

62

63 %% Convoluzione nel tempo

64

65 % segnale s_2

66 s_2 = zeros(length(t),1);

67 s_2(M/T+1:M/T+5/T)=1;

68 s_2(M/T+2/T:M/T+5/T)=0.5;

69 % segnale s_2

70 s_3 = zeros(length(t),1);

71 s_3(M/T-1/T:M/T+3/T)=0.75;

72

73 figure

74 plot(t,s_2 ,’b’,’LineWidth ’ ,2)

75 hold on

76 plot(t,s_3 ,’r’,’LineWidth ’ ,2)

77 grid on

78 legend(’s_2’,’s_3’)

79 % Trasformata di Fourier di conv(s_2 ,s_3)

80 s2_conv_s3 = T*conv(s_2 ,s_3);

81 s2_conv_s3_red = s2_conv_s3 (( length(s1_conv_s2 )-1)/2 - M/T:...

82 (length(s1_conv_s2 ) -1)/2+M/T);

83 plot(t,s2_conv_s3_red ,’k -- ’,’LineWidth ’ ,2)

84 legend(’s_2’,’s_3’,’conv(s_2 ,s_3)’)

85

86 % Trasformata di Fourier di s_2

87 S_2 = zeros(1,length(f));

88 for i=1: length(f)

89 S_2(i) = T * exp(-1i*2*pi*f(i)*t) * s_2;

90 end

Page 60: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

60 CAPITOLO 4. ANALISI DI FOURIER

91 % Trasformata di Fourier di s_2

92 S_3 = zeros(1,length(f));

93 for i=1: length(f)

94 S_3(i) = T * exp(-1i*2*pi*f(i)*t) * s_3;

95 end

96

97

98 % Trasformata di Fourier di conv(s_1 ,s_2)

99 S_conv = zeros(1,length(f));

100 for i=1: length(f)

101 S_conv(i) = T * exp(-1i*2*pi*f(i)*t) * s2_conv_s3_red ;

102 end

103

104 figure

105 plot(f,real(S_2.*S_3),’b --’,’LineWidth ’ ,2)

106 hold on

107 plot(f,real(S_conv),’r -.’,’LineWidth ’ ,2)

108 legend(’S_2(f)S_3(f)’,’TF(conv(s_2 ,s_3))’)

109 grid on

Esempio 20. Stampare la trasformata di Fourier del segnale

x(t) = sinc (2t) , t ∈ R. (4.12)

1 %%%%%%%%%%%%

2 % es20.m %

3 %%%%%%%%%%%%

4

5 close all

6

7 T = 0.05; % passo di campionamento di x

8 M = 100;

9 t = -M:T:M; % intervallo temporale [-M,M]

10 F = 0.05; % passo di campionamento di X

11 N = 5;

12 f = -N:F:N; % intervallo frequenziale [-N,N]

13

Page 61: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.3. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO61

14 % segnale

15 x = sinc (2*t);

16 % stampa segnale

17 figure , plot(t,x), title(’Segnale x(t)’)

18

19 %trasformata di Fourier

20 X=zeros(1,length(f));

21 for k=1: length(t)

22 X=X+T*x(k)*exp(-1i*2*pi*f*t(k));

23 end

24

25 %stampa trasformata

26 plot(f,real(X),’r’),title(’Trasformata X(f)’)

27 axis ([-1.5 1.5 -0.1 0.6])

28 grid on

Esercizio 12. Ripetere l’Esempio 20 con F = 0.01 ed F = 0.1. Qualefenomeno e possibile osservare?

Esercizio 13. Stampare la trasformata di Fourier del segnale

x(t) = e−2|t|, t ∈ R. (4.13)

Esercizio 13 Bis. Stampare il modulo della trasformata di Fourier per−10 ≤ 2πf ≤ 10 dei seguenti segnali

x1(t) = e−0.5|t|, t ∈ R (4.14)

x2(t) = cos(7t)e−0.5|t|, t ∈ R. (4.15)

Come si differenziano le due trasformate?

4.3 Trasformata di Fourier per segnali a tem-

po discreto

Consideriamo un segnale a tempo discreto

x(nT ), n ∈ Z. (4.16)

Page 62: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

62 CAPITOLO 4. ANALISI DI FOURIER

La corrispondente trasformata di Fourier e

X(f) = T∞∑

n=−∞

x(nT )e−j2πfnT ' T

MT∑

n=−MT

x(nT )e−j2πfnT , f ∈ R (4.17)

doveM e un numero sufficientemente grande. Anche in questo caso dobbiamocampionare l’insieme delle frequenze

X(kF ) = T

MT∑

n=−MT

x(nT )e−j2πknFT , k ∈ Z (4.18)

dove F e scelto sufficientemente piccolo.

Esempio 21. Stampare la trasformata di Fourier del segnale a dominiodiscreto con T = 1

x(n) =

{1, |n| ≤ 100, |n| > 10

. (4.19)

1 %%%%%%%%%%%%

2 % es21.m %

3 %%%%%%%%%%%%

4

5 clc , close all

6

7 n= -10:10;

8 %segnale

9 x=ones(1,length(n));

10

11 %trasformata di Fourier

12 F=0.01;

13 f=-1.5:F:1.5;

14 X=zeros(1,length(f));

15 for k=1: length(n)

16 X=X+x(k)*exp(-1i*2*pi*f*n(k));

17 end

18 plot(f,real(X))%stampa trasformata

Page 63: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.3. TRASFORMATA DI FOURIER PER SEGNALI A TEMPO DISCRETO63

Esercizio 14. Stampare la trasformata di Fourier del segnale a dominiodiscreto con T = 1

x(n) = sinc (3n) , n ∈ Z. (4.20)

Esempio 22. Si consideri il segnale dell’Esempio 21 ed il segnale periodico

y(n) = repNx(n), N = 40. (4.21)

Calcolare i coefficienti di Fourier ak di y(n) e stampare sul grafico dell’Esem-pio 21 il segnale a tempo discreto

k

N7→ Nak. (4.22)

Cosa si puo osservare dal grafico? Ricordare che l’espressione assunta dallatrasformata di Fourier per segnali discreti periodici di periodo Tp = NT e

S(kF ) =N−1∑n=0

Ts(nT )e−j2πknFT , (4.23)

con F = 1Tp

. I coefficienti ak della serie di Fourier corrispondente si ottengono

dalla formula precedente come

ak = FS(kF ) =1

TpS(kF ). (4.24)

1 %%%%%%%%%%%%

2 % es22.m %

3 %%%%%%%%%%%%

4

5 clc , close all

6 n= -10:10;

7 %segnale

8 x=ones(1,length(n));

9 %trasformata di Fourier

10 F=0.01;

11 f=-1:F:1;

12 X=zeros(1,length(f));

13 for k=1: length(n)

Page 64: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

64 CAPITOLO 4. ANALISI DI FOURIER

14 X=X+x(k)*exp(-1i*2*pi*f*n(k));

15 end

16 figure ,plot(f,real(X))%stampa trasformata

17 %%

18 % coefficienti di Fourier di y(n)

19 y=ones(1,length(n));

20 N=40;

21 k= -40:40;

22 a = zeros(1,length(k));

23 for l=1: length(k)

24 a(l)=1/N*exp(-1i*2*pi/N*k(l)*n)*y’;

25 end

26 hold on

27 stem(k/N,N*a,’r’)

28 legend(’Trasformata del segnale discreto non periodico ’ ,...

29 ’Trasformata del segnale discreto periodico ’)

Esercizio 15. Ripetere l’Esempio 22 ponendo T = 21. Cosa succede? Dareuna spiegazione teorica del risultato trovato.

Page 65: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.4. CAMPIONAMENTO E ALIASING 65

4.4 Campionamento e aliasing

Ricordiamo brevemente l’enunciato del fondamentale

Teorema 4.1 (Nyquist-Shannon). Sia s(t), t ∈ R, un segnale limitato inbanda, ovvero la cui trasformata di Fourier soddisfa

S(f) = 0 per |f | > B.

Allora, s(t) puo essere ricostruito esattamente a partire dai suoi campionis(nT ), n ∈ Z, presi con frequenza Fc ≥ 2B campioni al secondo. La formulaper la ricostruzione esatta del segnale e:

s(t) =+∞∑

n=−∞

s(nT )sinc [Fc (t− nT )] .

Esempio 23. L’esempio seguente illustra il meccanismo di ricostruzione deisegnali a banda limitata a partire da una loro versione campionata, eviden-ziando come la scelta della frequenza di campionamento sia fondamentaleper evitare l’aliasing.

1 %Il seguente codice consente di visualizzare le operazioni

2 %di campionamento e interpolazione su diversi tipi di segnali.

3

4 %% Definizione del segnale e studio nel tempo

5 clear all;

6 close all;

7 clc

8

9 camp = 0.001;

10 t = -4:camp :4;

11 k = length(t);

12

13 f_x = 0.5;

14

15 % Scegliere il segnale:

16 %x = sin(2*pi*f_x*t); disp([’Banda = ’,num2str(f_x)])

17 %x = cos(2*pi*2*f_x*t); disp([’Banda = ’,num2str (2* f_x )])

18 x = 4*sinc(t*4); disp([’Banda = 2’])

Page 66: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

66 CAPITOLO 4. ANALISI DI FOURIER

19

20 figure;

21 grid on;

22 hold on;

23 plot(t,x);

24 title(’Segnale originale ’);

25 fs = input(’Frequenze di campionamento. Valore di fs?\n’);

26 T = 1/fs;

27 nT = -4:T:4;

28

29 % Selezionare il segnale campionato:

30 %xn = sin(2*pi*f_x*nT);

31 %xn = cos(2*pi*2*f_x*nT);

32 xn = 4*sinc(nT*4);

33

34 stem(nT,xn,’r’);

35

36 %filtro interpolatore

37 q = fs*sinc(t*fs);

38 segnale_interpolato = zeros(1,length(t));

39

40 figure;

41 hold on;

42 grid on;

43 stem(nT,xn,’r’);

44 for i = 1: length(nT)

45 temp = xn(i).* sinc((t - ((i-1-(4/T))*T))*fs);

46 plot(t,temp);

47 segnale_interpolato = segnale_interpolato + temp;

48 end

49 title(’Interpolazione dei campioni ’);

50

51 figure;

52 plot(t,x,’--’,’LineWidth ’ ,2);

53 title(’Segnale originale ’);

54 hold on

55 plot(t,segnale_interpolato ,’r -.’,’LineWidth ’ ,2);

56 grid on;

Page 67: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

4.4. CAMPIONAMENTO E ALIASING 67

57 title(’Segnale ricostruito ’);

58

59 %% Studio in frequenza

60 clc

61 disp(’Studio in frequenza ’);

62 close all;

63

64 F=0.005; %passo di campionamento di x

65 f=-10:F:10;

66 %trasformata di Fourier

67 X=zeros(1,length(f));

68 for k=1: length(t)

69 X=X+camp*x(k)*exp(-1i*2*pi*f*t(k));

70 end

71 %stampa trasformata segnale originale

72 figure;

73 plot(f,real(X))

74 grid on;

75 title(’Trasformata di Fourier del segnale originale ’ ,...

76 ’LineWidth ’ ,2);

77

78 pause

79

80 Xn=zeros(1,length(f));

81 for k=1: length(nT)

82 Xn=Xn+ T*xn(k)*exp(-1i*2*pi*f*nT(k));

83 end

84 %stampa trasformata segnale campionato

85 figure;

86 hold on;

87 plot(f,real(Xn));

88 title(’Trasformata di Fourier del segnale campionato ’ ,...

89 ’LineWidth ’ ,2);

90 grid on

91 pause

92

93 Qn=zeros(1,length(f));

94 for k=1: length(t)

Page 68: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

68 CAPITOLO 4. ANALISI DI FOURIER

95 Qn=Qn + camp*q(k)*exp(-1i*2*pi*f*t(k));

96 end

97 %stampa trasformata del filtro interpolatore

98 hold on

99 plot(f,real(Qn),’r -’,’LineWidth ’ ,2);

100 grid on;

101

102 %% trasformata del segnale ricostruito in frequenze Xn(f)*Q(f)

103 segnale_filtrato = real(Xn).* real(Qn);

104

105 figure;

106 plot(f,real(X))

107 hold on

108 plot(f,segnale_filtrato ,’r -.’,’LineWidth ’ ,2);

109 grid on;

110 legend(’Trasformata del segnale originale ’ ,...

111 ’Trasformata del segnale ricostruito ’)

112 title(’Trasformata di Fourier del segnale filtrato ’);

Esercizio 16. Consideriamo il segnale a banda infinita dell’Esercizio 13.Ripetere l’esercizio con T = 0.1, T = 0.5 e T = 1. Motivare, conoscendo labanda del segnale, i risultati trovati.

Page 69: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 5Sistemi LTI discreti

5.1 Introduzione ai sistemi LTI discreti

In questa sezione parliamo dei sistemi lineari discreti di tipo causale attra-verso esempi che descrivono la dinamica di una certa popolazione. Prelimi-narmente, richiamiamo alcuni risultati sulla stabilita BIBO per questa classedi modelli.

Definizione 5.1 (Stabilita BIBO per sistemi discreti). Un sistema LTIcausale discreto del tipo

y(n) = h ∗ u(n)

si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) see solo se per ogni ingresso limitato u(n) esiste B > 0 tale che |y(n)| ≤ B perogni n ≥ 0.

Vale il seguente

Teorema 5.1 (Condizioni necessarie e sufficienti per la BIBO stabilita).Dato il sistema LTI discreto causale

y(n) = h ∗ u(n)

le seguenti condizioni sono equivalenti:

1. Il sistema e BIBO stabile

69

Page 70: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

70 CAPITOLO 5. SISTEMI LTI DISCRETI

2. La risposta impulsiva e tale che

+∞∑k=0

|h(k)| <∞.

Supponiamo ora che il modello ingresso-uscita corrisponda ad una funzio-ne di trasferimento H(z) razionale e che questa sia in forma minima, ovveropriva di cancellazioni. Allora, esprimendo il sistema nella forma in spazio distato {

x(n+ 1) = Ax(n) +Bu(n)

y(n) = Cx(n) +Du(n), (5.1)

in cui H(z) = C(zI−A)−1B+D, possiamo introdurre un’ulteriore condizionenecessaria e sufficiente per la stabilita BIBO:

Teorema 5.2. Il sistema in forma minima (5.1) e BIBO stabile se e solo segli autovalori di A hanno tutti modulo minore di uno.

Sia x(n) il numero di individui che costituiscono la popolazione all’istanten. In caso di risorse nulle la specie tende ad estinguersi con un tasso dimortalita pari ad m secondo la seguente equazione alle differenze

x(n+ 1) = mx(n). (5.2)

Esempio 24. Si consideri una popolazione con m = 0.8 e sia x(n) il numerodi individui costituenti la popolazione all’istante n. Supponendo che attual-mente il numero di individui sia pari a 50 (x(0) = 50), calcolare la dinamicadella popolazione dall’istante 0 a 20.

1 %%%%%%%%%%%%

2 % es24.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 m=0.8;

9 x(1)=50; % condizione iniziale

10 for n=2:21

11 x(n)=m*x(n-1);

Page 71: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 71

12 end

13 stem (0:20 ,x) %stampa grafico

14 xlabel(’n’)

15 ylabel(’x(n)’)

Ora supponiamo che ci siano delle risorse disponibili costanti che possonosostenere una popolazione di numerosita R. In questa situazione c’e untasso di natalita dipendente dalla differenza fra la popolazione sostenibiledall’ambiente R e quella presente

x(n+ 1) = mx(n) + (R− x(n)). (5.3)

Esempio 25. Si consideri una popolazione con m = 0.8, R = 20 e sia x(n)il numero di individui costituenti la popolazione all’istante n. Supponendoche attualmente il numero di individui sia pari a 50, calcolare la dinamicadella popolazione dall’istante 0 a 20. Interpretare il risultato in termini dievoluzione libera e risposta forzata.Svolgimento.Possiamo riscrivere il sistema nella forma (5.1):{

x(n+ 1) = (m− 1)x(n) +R

y(n) = x(n),

dove

A = a := m− 1, B = 1, C = 1, D = 0, u(t) = R, ∀(t ≥ 0).

Ricordiamo l’espressione per l’uscita di un sistema in funzione delle matriciche lo descrivono, cioe

x(n) = Anx(0) +n−1∑i=0

AiBu(n− 1− i)

y(n) = CAnx(0) +n−1∑i=0

CAiBu(n− 1− i) +Du(n)

Il primo addendo nell’espressione di y(n) descrive l’evoluzione libera del si-stema, cioe l’effetto delle condizioni iniziali, mentre il secondo e chiamatotermine di evoluzione forzata. Ricaviamo per il nostro esempio l’equazione

x(n) = anx(0) +n−1∑i=0

aiR.

Page 72: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

72 CAPITOLO 5. SISTEMI LTI DISCRETI

Poiche |a| = 0.2 < 1, per n→ +∞, avremo

x∞ = limn→+∞

x(n) =1

1− aR =

50

3.

Simuliamo il sistema per verificare i risultati ottenuti. L’andamento demo-grafico della popolazione e riportato in Fig. 25.

1 %%%%%%%%%%%%

2 % es25.m %

3 %%%%%%%%%%%%

4

5 close all

6 clc

7 m = 0.8;

8 R = 20;

9 T = 20;

10 x = zeros(1,T);

11 x(1)= 50; %condizione iniziale

12 t = 0:T;

13

14 for n=2:T+1

15 x(n)=m*x(n-1)+(R-x(n-1));

16 end

17 stem (0:T,x) %stampa grafico

18 xlabel(’n’)

19 ylabel(’x(n)’)

20

21 a = m-1;

22 disp([’Valore di a = ’,num2str(a)])

23 disp([’Limite di x(n) per n tendente all’’infinito = ’...

24 ,num2str (1/(1 -a)*R)])

25 grid

26

27 % Evoluzione libera

28 x_l = zeros(size(x));

29 x_l (1)=x(1);

30 for n=2:T+1

31 x_l(n)=a*x_l(n-1);

Page 73: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.1. INTRODUZIONE AI SISTEMI LTI DISCRETI 73

32 end

33

34 % Evoluzione forzata

35 x_f = zeros(size(x));

36 for n=2:T+1

37 x_f(n) = (1-a^(n-1))/(1 -a)*R;

38 end

39

40 figure

41 subplot (311) , stem(t,x_l ,’r’),grid ,legend(’Ev. libera ’)

42 subplot (312) , stem(t,x_f ,’b’),grid ,legend(’Ev. forzata ’)

43 subplot (313) , stem(t,x,’k --’,’LineWidth ’ ,2),...

44 grid ,hold on,stem(t,x_f+x_l ,’g’),

45 legend(’x(n)’,’x_l + x_f’)

0 2 4 6 8 10 12 14 16 18 200

5

10

15

20

25

30

35

40

45

50

n

x(n)

.

Figura 5.1: Andamento demografico della popolazione, Esercizio 25

Esercizio 17. Ora supponiamo che il numero di individui nati all’istanten dipenda dalla differenza fra la popolazione sostenibile dall’ambiente R equella presente all’istante n − 2 per un tasso di fertilita t. Il nuovo sistemadiventa:

x(n) = mx(n− 1) + (R− tx(n− 2)). (5.4)

Calcolare la dinamica della popolazione dall’istante 0 a 20 per i seguenti casi

x(−1) = 10, x(0) = 20, m = 0.8, t = 0.4, R = 20

x(−1) = 10, x(0) = 20, m = 0.8, t = 1, R = 20. (5.5)

Page 74: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

74 CAPITOLO 5. SISTEMI LTI DISCRETI

Sulla base dei grafici, a quale classe di esseri viventi puo essere associatala dinamica del primo e del secondo caso rispettivamente? Riflettere sulladinamica dei due sistemi.

5.2 Risposta impulsiva

Consideriamo il modello (5.4) della dinamica di una popolazione. Tale mo-dello puo essere visto come un sistema LTI discreto con ingresso costanteu(n) = R:

x(n) = mx(n− 1)− tx(n− 2) + u(n). (5.6)

Percio, la risposta impulsiva h(n) di tale modello si puo ottenere imponendou(n) = δ(n) con x(−2) = 0 e x(−1) = 0.

Esempio 26. Stampare la risposta impulsiva del modello (5.6) con

1. m = 0.8 e t = 0.4

2. m = 0.8 e t = 1.

Guardando i grafici prodotti, dire se i corrispondenti sistemi sono stabili omeno e verificare che le conclusioni trovate siano conformi ai risultati trovatinell’Esercizio 17.

1 %%%%%%%%%%%%

2 % es26.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 m=0.8;

9 T = 10000;

10 u=[0 0 1 zeros(1,T)]; %ingresso delta(n)

11 %% Primo caso (t = 0.4)

12 t=0.4;

13 h = zeros(T+3,1); % condizione iniziali nulle

14 for n=3:T+3

15 h(n)=m*h(n-1)+(u(n)-t*h(n-2));

16 end

Page 75: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.2. RISPOSTA IMPULSIVA 75

17 figure

18 stem (0:T,h(3:T+3)) %stampa grafico

19 axis([-1 20, -0.3 1.3])

20 xlabel(’n’)

21 ylabel(’x(n)’)

22 title(’Caso t = 0.4’)

23

24 % Approssimiamo la serie dei moduli di h(k):

25 disp([’Serie dei moduli approssimata (T=’ ,...

26 num2str(T),’) vale ’])

27 sum(abs(h))

28

29 %% Secondo caso (t = 1)

30 t=1;

31 h = zeros(T+3,1); % condizione iniziali nulle

32 for n=3:T+3

33 h(n)=m*h(n-1)+(u(n)-t*h(n-2));

34 end

35 figure

36 stem (0:T,h(3:T+3),’r’) %stampa grafico

37 axis([-1 100, -1.5 1.5])

38 xlabel(’n’)

39 ylabel(’x(n)’)

40 title(’Caso t = 1’)

41

42 % Approssimiamo la serie dei moduli di h(k):

43 disp([’Serie dei moduli approssimata (T=’ ,...

44 num2str(T),’) vale ’])

45 sum(abs(h))

Esercizio 18. Consideriamo un modello a tempo discreto con ingresso x euscita y che esegue la media mobile su tre punti:

y(n) =1

3(x(n) + x(n− 1) + x(n− 2)). (5.7)

Calcolare la risposta impulsiva.

Ora supponiamo di voler calcolare la risposta x di un sistema lineare(causale) ad un ingresso generico u partendo da condizioni iniziali nulle.

Page 76: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

76 CAPITOLO 5. SISTEMI LTI DISCRETI

In questa situazione potremo applicare l’approccio iterativo dell’Esempio 25oppure, avendo a disposizione la risposta impulsiva h, calcolare x tramite laconvoluzione tra u e h.

Esempio 27. Consideriamo il modello (5.6), supponendo che le risorse di-sponibili varino secondo un bioritmo (ad esempio le stagioni):

u(n) = Rsin( n

N0)

2+ S0. (5.8)

Calcolare la dinamica della popolazione dall’istante 0 a 60 partendo dacondizioni iniziali nulle con m = 0.6, t = 0.2, R = 5, N0 = 2 e S0 = 10.

1 %%%%%%%%%%%%

2 % es27.m %

3 %%%%%%%%%%%%

4

5 clear all

6 close all

7 clc

8 m=0.6;

9 t=0.2;

10 R=5;

11 N0=2;

12 S0=10;

13 % calcolo della risposta impulsiva

14 u=[0 0 1 zeros (1 ,60)]; %ingresso delta(n)

15 h(1)=0; % condizione iniziali

16 h(2)=0;

17 for n=3:63

18 h(n)=m*h(n-1)-t*h(n-2)+u(n);

19 end

20 h=h(3:end); % risposta impulsiva dall ’istante zero

21 %calcolo della risposta del sistema

22 n=0:60;

23 u=R*sin(n/N0)/2+S0;

24 x=conv(h,u);

25 x=x(1:61); % riaggiustamento del vettore

26 stem (0:60 ,x) %stampa grafico

27 xlabel(’n’)

Page 77: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.3. RISPOSTA IN FREQUENZA 77

28 ylabel(’x(n)’)

Esercizio 19. Consideriamo una popolazione di pesci da allevamento la cuidinamica e descritta dal modello (5.6) con m = 0.6, t = 0.2, x(−2) = 0 ex(−1) = 0. Inizialmente, dal’istante 0 a 39, i proprietari dell’allevamentodecidono di non intervenire per modificare le risorse naturali che offre illaghetto che ospita questi pesci

u(n) = 5sin(n

2)

2+ 10, 0 ≤ n < 40. (5.9)

Tuttavia, gli allevatori non sono soddisfatti del numero di pesci che produ-cono e dall’istante n = 40 immettono nel lago una risorsa (che si aggiunge aquella naturale) che decresce di una unita all’aumentare di n

u(n) = 5sin( n

N0)

2+ 10 + 80− n, 40 ≤ n < 80. (5.10)

Dopo questa decisione gli allevatori sono contenti, ma vorrebbero che la po-polazione di questi pesci fosse costante nel tempo. Decidono percio di co-struire un impianto sofisticato che fornisce risorse costanti nel tempo allapopolazione di pesci

u(n) = 30, n ≥ 80. (5.11)

Stampare u e la corrispondente dinamica della popolazione.

5.3 Risposta in frequenza

In questa sezione ci occupiamo del calcolo della risposta in frequenza di unsistema LTI causale discreto.

Esempio 28. Consideriamo il sistema LTI dell’Esempio 26. Vogliamo cal-colare la risposta in frequenza per i due casi considerati. Stampare moduloe fase delle risposte in frequenza.

1 %%%%%%%%%%%%

2 % es28.m %

3 %%%%%%%%%%%%

4

5 clear all

Page 78: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

78 CAPITOLO 5. SISTEMI LTI DISCRETI

6 close all

7 clc

8 m=0.8;

9

10 % Primo valore di t

11 t=0.4;

12

13 % Secondo valore di t

14 % t=1;

15

16 % calcolo della risposta impulsiva

17 u=[0 0 1 zeros (1 ,60)]; %ingresso delta(n)

18 h(1)=0; % condizioni iniziali

19 h(2)=0;

20 for k=3:63

21 h(k)=m*h(k-1)-t*h(k-2)+u(k);

22 end

23 h=h(3:end); %risposta impulsiva dall ’istante 0

24 % risposta in frequenza

25 n=0:60;

26 Theta =0.01; %trasformata di Fourier

27 theta=-pi:Theta:pi;

28 H=zeros(1,length(theta ));

29 for k=1: length(n)

30 H=H+h(k)*exp(-1i*theta*n(k));

31 end

32 %stampa modulo risposta in frequenza

33 figure

34 plot(theta ,abs(H))

35 xlabel(’theta’)

36 ylabel(’|H|’)

37 grid

38 %stampa fase risposta in frequenza

39 figure

40 plot(theta ,phase(H))

41 grid

42 xlabel(’theta’)

43 ylabel(’fase di H’)

Page 79: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.4. AUTOFUNZIONI DEI FILTRI 79

Esercizio 20. Si consideri il sistema dell’Esercizio 18. Stampare modulo efase della risposta in frequenza H(eiθ).

5.4 Autofunzioni dei filtri

Consideriamo un sistema LTI causale BIBO-stabile con risposta impulsivah(n):

x(n) = h ∗ u(n). (5.12)

Se u(n) = sin(θ0n) per n > 0, u(t) = 0 per n ≤ 0 e h(n) e a valori reali,allora, dopo un transitorio iniziale,

x(n) = |H(ejθ0)| sin(θ0n+ arg[H(ejθ0)]). (5.13)

Osservazione 5.1. Dal punto di vista applicativo, questa proprieta permet-te di ricostruire empiricamente la risposta in frequenza di un sistema LTIstabile, mediante l’uso di segnali di ingresso sinusoidali con frequenze diverse.

Esempio 29. Consideriamo il sistema (5.6) con m = 0.6 e t = 0.2. Alimen-tiamo il sistema con la sinusoide di ampiezza unitaria e θ0 = 1

u(n) = sin(θ0n), n ≥ 0. (5.14)

Stampare i tre seguenti grafici:

1. u(n) e x(n) (scegliamo 0 ≤ n ≤ 600)

2. |U(ejθ)| e |X(ejθ)|

3. |H(ejθ)|

Verificare dai grafici che

|H(ejθ0)| ' |X(ejθ0)||U(ejθ0)|

. (5.15)

1 %%%%%%%%%%%%

2 % es29.m %

3 %%%%%%%%%%%%

4

Page 80: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

80 CAPITOLO 5. SISTEMI LTI DISCRETI

5 clear all

6 close all

7 clc

8 m=0.6;

9 t=0.2;

10 n=0:600;

11 % segnale di ingresso u

12 theta0 =1;

13 u=sin(theta0*n);

14 Theta =0.01; %trasformata di Fourier

15 theta=-pi:Theta:pi;

16 U=zeros(1,length(theta ));

17 for k=1: length(n)

18 U=U+u(k)*exp(-1i*theta*n(k));

19 end

20

21 %risposta impulsiva

22 d=[0 0 1 zeros (1 ,600)]; %ingresso delta(n)

23 h(1)=0; % condizioni iniziali

24 h(2)=0;

25 for k=3:n(end)+3

26 h(k)=m*h(k-1)-t*h(k-2)+d(k);

27 end

28 h=h(3:end); % risposta impulsiva dall ’istante 0

29 %calcolo della risposta alla sinusoide u

30 x=conv(u,h);

31 Theta =0.01; %trasformata di Fourier

32 theta=-pi:Theta:pi;

33 X=zeros(1,length(theta ));

34 for k=1: length(n)

35 X=X+x(k)*exp(-1i*theta*n(k));

36 end

37

38 % risposta in frequenza

39 Theta =0.01; %trasformata di Fourier

40 theta=-pi:Theta:pi;

41 H=zeros(1,length(theta ));

42 for k=1: length(n)

Page 81: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

5.4. AUTOFUNZIONI DEI FILTRI 81

43 H=H+h(k)*exp(-1i*theta*n(k));

44 end

45

46 % grafici di x e u

47 figure

48 stem(n,x(1: length(n)),’r’)

49 hold on

50 stem(n,u,’b’)

51 xlabel(’n’)

52 legend(’x’,’u’)

53

54 % grafici |X| e |U|

55 figure

56 plot(theta ,abs(X),’r’)

57 hold on

58 plot(theta ,abs(U),’b’)

59 xlabel(’theta’)

60 legend(’|X|’,’|U|’)

61

62 % grafico |X| vs |H||U|

63 figure

64 plot(theta ,abs(H).*abs(U),’r --’,’LineWidth ’ ,2)

65 hold on

66 plot(theta ,abs(X),’b’)

67 xlabel(’theta’)

68 legend(’|X|’, ’|H||U|’)

Esercizio 21. Consideriamo l’Esempio 29. Stampare la fase di H(ejθ) e cal-colare arg[H(ejθ0)]. Verificare poi che nel primo grafico x e u sono sfasatetra loro di tale quantita.Suggerimento: stampare sul primo grafico il segnale continuo u(t) = sin(θ0t), t ≥0....

Page 82: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

82 CAPITOLO 5. SISTEMI LTI DISCRETI

Page 83: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

Capitolo 6Sistemi LTI continui

In questa sezione studieremo dei sistemi meccanici attraverso modelli LTIcontinui e causali. Preliminarmente richiamiamo alcuni risultati sulla stabi-lita BIBO per questa classe di modelli.

Definizione 6.1 (Stabilita BIBO per sistemi discreti). Un sistema LTIcausale continuo del tipo

y(t) = h ∗ u(t)

si dice BIBO stabile (dove BIBO sta per Bounded Input Bounded Output) see solo se per ogni ingresso limitato u(t) esiste B > 0 tale che |y(t)| ≤ B perogni t ≥ 0.

Dalla teoria sappiamo che

Teorema 6.1 (Condizioni necessarie e sufficienti per la BIBO stabilita).Dato il sistema LTI continuo e causale

y(t) = h ∗ u(t)

le seguenti condizioni sono equivalenti:

1. Il sistema e BIBO stabile

2. La risposta impulsiva e tale che∫ +∞

0

|h(t)| dt <∞.

83

Page 84: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

84 CAPITOLO 6. SISTEMI LTI CONTINUI

Infine, la funzione di trasferimento H(s) sia razionale ed in forma minima,priva cioe di poli e zeri coincidenti. Allora, esprimendo il sistema nella formain spazio di stato {

ddtx(t) = Ax(t) +Bu(t)

y(t) = Cx(t) +Du(t), (6.1)

in cui H(s) = C(sI−A)−1B+D, possiamo introdurre un’ulteriore condizionenecessaria e sufficiente per la stabilita BIBO.

Teorema 6.2. Il sistema in forma minima (6.1) e BIBO stabile se e solo segli autovalori di A sono tutti a parte reale negativa.

6.1 Equazioni differenziali in Matlab

Consideriamo l’equazione differenziale del secondo ordine a parametri costan-ti

ad2

dt2y(t) + b1

d

dty(t) + b0y(t) = u(t) (6.2)

dove a 6= 0 e u(t) noto. Poniamo

v1(t) = y(t), v2(t) =d

dty(t) (6.3)

quindi (6.2) diventa{ddtv1(t) = v2(t)

ddtv2(t) = − b1

av2(t)− b0

av1(t) + 1

au(t)

. (6.4)

Esprimendo (6.4) in forma vettoriale(ddtv1(t)

ddtv2(t)

)=

(0 1− b0

a− b1

a

)(v1(t)v2(t)

)+

(01a

)u(t). (6.5)

Infine, definendo

v(t) =

(v1(t)v2(t)

)(6.6)

e

A =

(0 1− b0

a− b1

a

), B =

(01a

), C =

(1 0

), D = 0 (6.7)

Page 85: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI85

otteniamo il sistema {ddtv(t) = Av(t) +Bu(t)

y(t) = Cv(t) +Du(t).

Osserviamo che la (6.8) e una forma equivalente di (6.2). Percio, le matriciA,B,C,D descrivono in maniera univoca l’equazione differenziale (6.2).

Osservazione 6.1. Per l’equazione differenziale del primo ordine

ad

dty(t) + b0y(t) = u(t), a 6= 0 (6.8)

abbiamo v(t) = y(t), A = − b0a

, B = 1a, C = 1, D = 0.

Esercizio 22. Si consideri l’equazione differenziale di ordine n descritta da

adn

dtny(t) +

n−1∑k=0

bkdk

dtky(t) = cu(t), a 6= 0. (6.9)

Verificare che le corrispondenti matrici sono

A =

0 1 0 . . .

. . . . . .

0 1

− b0a

. . . . . . − bn−1

a

, B =

0......1a

, C =(

0 . . . 0 1), D = 0.

(6.10)

In Matlab, per calcolare la soluzione ai valori iniziali y(t) utilizziamo lafunzione lsim. I parametri di ingresso sono: A,B,C,D, il vettore dei tempi t,

l’ingresso u e il vettore delle condizioni iniziali(y(0) d

dty(0)

)T. Nel seguito

vedremo in dettaglio l’utilizzo di tale funzione con degli esempi.

6.2 Studio di sistemi meccanici tramite mo-

delli LTI continui

In questa sezione prendiamo in esame l’equazione differenziale che descrivela dinamica di un oscillatore armonico costituito da una molla di costanteelastica k collegata ad una massa m, Figura 6.1. Sia y(t) la posizione di

Page 86: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

86 CAPITOLO 6. SISTEMI LTI CONTINUI

k

y(t)

u(t)

M

Figura 6.1: Modello molla-massa.

un prefissato punto dell’oscillatore all’istante t. Il secondo principio delladinamica ci dice che, per un corpo a massa m costante,

F = ma

in cui F indica la risultante delle forze agenti sul punto materiale ed a :=d2

dty(t) e l’accelerazione risultante. Quindi, se ad esso non e applicata alcuna

forza esterna, il moto dell’oscillatore e descritto dalla seguente equazionedifferenziale

md2

dt2y(t) = −ky(t). (6.11)

Esempio 30. Si consideri un oscillatore armonico con m = 0.1Kg e k =1.6 N

m. Supponendo che il punto prefissato dell’oscillatore sia a 10m dalla

posizione di riposo (y(0) = 10, ddty(0) = 0), calcolare la dinamica di tale

punto dall’istante 0 a 10.In questo caso

A =

(0 1− km

0

), B =

(01m

), C =

(1 0

), D = 0 (6.12)

e u(t) = 0 in quanto l’oscillatore non e soggetto a nessuna forza.

1 %% Oscillatore armonico

2

3 close all

4 clear all

5 clc

6

Page 87: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI87

7 m=0.1;

8 k=1.6;

9 T=0.01;

10 t=0:T:10; % vettore dei tempi

11

12 % definizione matrici

13 A = [0 1; -k/m 0];

14 B = [0;1/m];

15 C = [1 0];

16 D = 0;

17 % ingresso nullo

18 u=zeros(1,length(t));

19 % condizioni iniziali

20 v0=[10; 0];

21

22 % calcolo dell ’uscita

23 y = lsim(A,B,C,D,u,t,v0);

24 figure

25 plot(t,y)

26 xlabel(’Tempo’)

27 ylabel(’y(t)’)

28 title(’Oscillatore armonico ’)

Esercizio 23. Ripetere l’Esempio 30 supponendo che la posizione iniziale delpunto prefissato sia 20m. Che cosa si puo concludere da questi due esempi?

Ora supponiamo che sia presente l’attrito viscoso λ. L’equazione dell’o-scillatore armonico smorzato e

md2

dt2y(t) = −λ d

dty(t)− ky(t). (6.13)

Esempio 31. Si consideri un oscillatore armonico smorzato. Supponendoche il punto prefissato dell’oscillatore sia a 10m dalla posizione di riposo(y(0) = 10, d

dty(0) = 0), calcolare la dinamica di tale punto dall’istante 0 a

10 per i due seguenti casi:

• m = 0.1Kg, λ = 0.1Kgs

, k = 1.6 Nm

.

• m = 0.1Kg, λ = 0.9Kgs

, k = 1.6 Nm

.

Page 88: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

88 CAPITOLO 6. SISTEMI LTI CONTINUI

Cosa differenzia i due casi precedenti?

In questo caso

A =

(0 1− km− λm

), B =

(01m

), C =

(1 0

), D = 0 (6.14)

e u(t) = 0 in quanto l’oscillatore non e soggetto a nessuna forza.

1 %% Oscillatore smorzato

2

3 close all

4 clear all

5 clc

6 m=0.1;

7 k=1.6;

8 lambda =0.1;

9 %lambda =0.9;

10 v0=[10; 0]; % condizioni iniziali

11 T=0.01; % vettore dei tempi

12 t=0:T:10;

13 u=zeros(1,length(t)); % ingresso nullo

14 A=[0 1; -k/m -lambda/m];% definizione matrici

15 B=[0; 1/m];

16 C=[1 0];

17 D=0;

18 disp(’Autovalori:’)

19 eig(A)

20 y=lsim(A,B,C,D,u,t,v0); % dinamica modello

21 figure

22 plot(t,y)

23 grid

24 xlabel(’Tempo’)

25 ylabel(’y(t)’)

26 title([’Oscillatore armonico smorzato con \lambda = ’ ,...

27 num2str(lambda )])

Esercizio 24. Ripetere l’Esempio 31 supponendo che la posizione iniziale delpunto prefissato sia 20m. Che cosa si puo concludere da questi due esempi?

Page 89: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6.2. STUDIO DI SISTEMI MECCANICI TRAMITE MODELLI LTI CONTINUI89

Ora supponiamo che sull’oscillatore agisca una forza costante dovuta allapresenza della gravita. In questo caso l’equazione dell’oscillatore armonicodiventa

md2

dt2y(t) = −λ d

dty(t)− ky(t) +mg. (6.15)

Esempio 32. Si consideri un modello molla-massa verticale in cui c’e lapresenza della forza di gravita. Sia m = 0.1Kg, λ = 0.1Kg

s, k = 1.6 N

m.

Supponendo che il punto prefissato dell’oscillatore sia a 10m dalla posizione diriposo (y(0) = 10, d

dty(0) = 0), calcolare la dinamica di tale punto dall’istante

0 a 20.In questo caso

A =

(0 1− km− λm

), B =

(01m

), C =

(1 0

), D = 0. (6.16)

1 %% Oscillatore smorzato sottoposto alla forza di gravita

2

3 close all

4 clear all

5 clc

6

7 m=0.1;

8 k=1.6;

9 lambda =0.1;

10 g=9.8;

11 v0=[10; 0]; % condizioni iniziali

12 T=0.01; % vettori dei tempi

13 t=0:T:20;

14 u=m*g*ones(1,length(t)); % ingresso

15 A=[0 1; -k/m -lambda/m];% definizione matrici

16 B=[0;1/m];

17 C=[1 0];

18 D=0;

19 y=lsim(A,B,C,D,u,t,v0); % dinamica modello

20 figure

21 plot(t,y)

22 grid

23 xlabel(’Tempo’)

Page 90: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

90 CAPITOLO 6. SISTEMI LTI CONTINUI

24 ylabel(’y(t)’)

25 title([’Oscillatore armonico smorzato con \lambda = ’ ,...

26 num2str(lambda )])

Esercizio 25. Ripetere l’Esempio 32 con λ = 0.9Kgs

. Perche la dinamicacambia in maniera rilevante?

Esempio 33. Consideriamo il modello

md2

dt2y(t) = −λ d

dty(t)− ky(t) + x(t). (6.17)

con m = 0.1Kg, λ = 0.1Kgs

, k = 1.6 Nm

. Supponiamo che all’oscillatore siaapplicata una forza sinusoidale:

x(t) = F0 sin(ωt), F0 = 5N. (6.18)

Stampare x(t) e la dinamica dell’oscillatore dall’istante 0 a 20 partendo dacondizioni iniziali nulle per ω = 2, ω = 4 e ω = 7.

1 %% Oscillatore smorzato con ingresso sinusoidale

2

3 close all

4 clear all

5 clc

6

7 m=0.1;

8 k=1.6;

9 lambda =0.1;

10 v0=[0; 0];

11 T=0.01; % vettore dei tempi

12 t=0:T:20;

13 A=[0 1; -k/m -lambda/m];% definizione matrici

14 B=[0;1/m];

15 C=[1 0];

16 D=0;

17 F0=5; % segnale di ingresso x

18 omg =2;

19 % omg =4;

20 % omg =7;

Page 91: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6.3. ACCENNI ALL’USO DI SIMULINK 91

21 u=F0*sin(omg*t);

22 y=lsim(A,B,C,D,u,t,v0); % dinamica modello

23 figure

24 plot(t,u)

25 hold on

26 plot(t,y,’r’)

27 legend(’x’,’y’)

28 grid on

29 xlabel(’Tempo’)

30 title([’Oscillatore armonico smorzato con \lambda = ’ ,...

31 num2str(lambda),’ ed ingresso sinusoidale ’])

Esercizio 26. Ripetere l’Esempio 33 supponendo che l’oscillatore smorzatoall’istante t = 0 sia a 10m dalla posizione di riposo.

6.3 Accenni all’uso di Simulink

Simulink e uno strumento offerto da Matlab per modellare e simulare sistemi.Questo pacchetto software si compone di una serie di librerie che forniscono iblocchi elementari che, opportunamente interconnessi, andranno a realizzarelo schema a blocchi del sistema di interesse.

Per avviare Simulink dobbiamo agire sul quartultimo tasto della barradei comandi di Figura 2.2. Alternativamente, e sufficiente digitare simulink

nella Command Window. Apparira la finestra di Figura 6.2. Nella partesinistra vediamo la lista delle librerie (ognuna delle quali contiene una certatipologia di componenti base), a destra invece ci sono i diversi componenti checostituiscono la libreria selezionata. Per aprire un nuovo foglio di lavoro dovecreare il proprio schema e sufficiente premere il primo pulsante sulla barradei tasti di Figura 6.2 e apparira la finestra di Figura 6.3 dove possiamo tra-scinare dalla libreria i componenti che ci servono. I collegamenti tra i diversiblocchi vengono effettuati cliccando sul blocco di partenza e poi cliccandosul blocco di arrivo del collegamento premuto il tasto Ctrl. Facendo doppioclick sui blocchi possiamo impostarne i parametri. Il passo successivo e quel-lo di impostare i parametri della simulazione. Tali parametri si impostanoselezionando la voce configuration parameter dal menu simulation. Apparirala finestra di Figura 6.4 dove si deve impostare l’istante iniziale (star time)

Page 92: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

92 CAPITOLO 6. SISTEMI LTI CONTINUI

Figura 6.2: Libreria di Simulink

Figura 6.3: Foglio di lavoro di Simulink

Page 93: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

6.3. ACCENNI ALL’USO DI SIMULINK 93

Figura 6.4: Finestra per impostare i parametri della simulazione

e finale (stop time). Nel Solver options-Type scegliere Fixed-step. Ora bastafar partire la simulazione agendo sul pulsante Start simulation (Figura 6.3).

Riportiamo a titolo d’esempio un modello che permette di simulare glioscillatori analizzati nella precedente sezione. Per definire i parametri utiliz-ziamo lo script oscillatori parametri.m (che richiede la presenza del fileSimulink oscillatori.mdl nella stessa cartella).

1 %% Modello simulink per l’oscillatore

2 % definizione di parametri

3

4 % Parametri del modello

5 m=0.1;

6 k=1.6;

7 lambda =0.1;

8

9 % Matrici del sistema

10 A=[0 1; -k/m -lambda/m];% definizione matrici

11 B=[0;1/m];

12 C=[1 0];

13 D=0;

Page 94: Laboratorio Matlab di Segnali e Sistemi - Automaticaautomatica.dei.unipd.it/tl_files/utenti/zampieri/teaching/Segnali... · Essi riscrissero Matlab in C e fondarono la The MathWorks

94 CAPITOLO 6. SISTEMI LTI CONTINUI

14

15 % Condizioni iniziali

16 v0=[10; 0];

17

18 % Parametri dei segnali di ingresso

19 g = 9.8;

20 F0 = 5;

21 omg = 2;

22

23 open oscillatori

Il modello Simulink e rappresentato in Fig. 6.5.

u(t)

y(t)

To Workspace

y

State-Space

x' = Ax+Bu y = Cx+Du

Scope

Manual Switch1

Manual Switch

F = mg

m*g

F = F0*sin(omg*t)

F = 0

0

Figura 6.5: Modello Simulink per gli oscillatori