25
Segnali e Sistemi Laboratorio Matlab Irene Pappalardo [email protected] Corso di Laurea in Ingegneria dell’Informazione May 05-12-14, 2014 Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 1 / 25

Segnali e Sistemi Laboratorio Matlab

Embed Size (px)

Citation preview

Page 1: Segnali e Sistemi Laboratorio Matlab

Segnali e Sistemi

Laboratorio Matlab

Irene Pappalardo

[email protected]

Corso di Laurea in Ingegneria dell’Informazione

May 05-12-14, 2014

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 1 / 25

Page 2: Segnali e Sistemi Laboratorio Matlab

Note: Segnale complesso

Sia a un vettore (o una matrice) di numeri complessi. I seguenti comandirestituiscono un vettore (o una matrice) con le stesse dimensioni di a:

• abs(a) calcola il modulo di ciascun elemento di a;

• angle(a) calcola la fase di ciascun elemento di a limitandolaall’intervallo [−π,+π];

• unwrap(angle(a)) calcola la fase di ciascun elemento di aeliminando le discontinuita di angle(a);

• conj(a) calcola il complesso coniugato di ciascun elemento di a;

• real(a) calcola la parte reale di ciascun elemento di a;

• imag(a) calcola la parte immaginaria di ciascun elemento di a.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 2 / 25

Page 3: Segnali e Sistemi Laboratorio Matlab

Note: Segnale complesso

IMPORTANTE:

• a.’ calcola il trasposto di a;

• a’ calcola il trasposto del complesso coniugato di a;

• In R i comandi a.’ e a’ si equivalgono.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 3 / 25

Page 4: Segnali e Sistemi Laboratorio Matlab

Area e Energia - segnale discreto

y(nT ) = e−0.02nT sin(nT ) , n ∈ N , T = 3

T = 3;

M = 200;

n = 0:T:M;

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

figure;

stem(n,y);

xlabel(’n’);

ylabel(’y(nT)’);0 50 100 150 200

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

n

y(nT

)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 4 / 25

Page 5: Segnali e Sistemi Laboratorio Matlab

Area e Energia - segnale discreto

• Area:

Ay = T

+∞∑

n=−∞

y(nT )A y = T*sum(y);

>> A y = 0.1061

• Energia:

Ey = T

+∞∑

n=−∞

|y(nT )|2

E y = T*sum(abs(y).^2); (in C)

E y = T*sum(y.^2); (in R)>> E y = 10.5935

NOTA: Al variare di T si ottengono diversi segnali y(nT ) che avrannodiversi valori di area e energia.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 5 / 25

Page 6: Segnali e Sistemi Laboratorio Matlab

Area e Energia - segnale continuo

y(t) = 3 sinc(t) = 3sin(πt)

πt, t ∈ R

Ogni segnale continuo viene approssimato alla sua versione discreta

y(nT ) = 3 sinc(nT ) , n ∈ Z , T piccolo a piacere

T = 0.02;

M = 20;

t = -M:T:M;

y = 3*sinc(t);

figure;

plot(t,y,’Linewidth’,2);

xlabel(’t’);

ylabel(’y(t)’);−20 −10 0 10 20

−1

0

1

2

3

t

y(t)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 6 / 25

Page 7: Segnali e Sistemi Laboratorio Matlab

Area e Energia - segnale continuo

• Area:Ay =

∫ +∞

−∞

y(t)dt

Ay ≃ T

+∞∑

n=−∞

y(nT )A y = T*sum(y);

>> A y = 2.9696

• Energia:

Ey =

∫ +∞

−∞

|y(t)|2 dt

Ey ≃ T

+∞∑

n=−∞

|y(nT )|2

E y = T*sum(abs(y).^2); (in C)

E y = T*sum(y.^2); (in R)>> E y = 8.9544

NOTA: Diminuendo T si ottiene un’approssimazione del segnale continuopiu accurata e i valori di area e energia tendono a quelli teorici.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 7 / 25

Page 8: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale discreto

Y (f ) = T

+∞∑

n=−∞

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

Come ogni segnale continuo Y (f ) va approssimato alla versione discreta:

Y (kF ) ≃ T

+∞∑

n=−∞

y(nT )e−j2πknFT, k ∈ Z, F piccolo a piacere

La trasformata di Fourier e periodica di periodo Fp = 1T.

Si puo scegliere se graficare Y (kF ) nell’intervallo[

−Fp

2 ,+Fp

2

]

oppure in

[0,Fp].

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 8 / 25

Page 9: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale discreto

In Matlab, applicando la definizione:

T = 1;

M = 200;

n = 0:T:M;

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

F = 0.001;

F max = 1/2/T;

f = -F max:F:F max; % f = 0:F:2*F max;

Y = zeros(1,length(f));

for index n = 1:length(n)

Y = Y + T*y(index n)*exp(-1i*2*pi*f*n(index n));

end

plot(f,abs(Y),’Linewidth’,2)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 9 / 25

Page 10: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale discreto

In Matlab, applicando la definizione (alternativa)

T = 1;

M = 200;

n = 0:T:M;

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

F = 0.001;

F max = 1/2/T;

f = -F max:F:F max; % f = 0:F:2*F max;

Y = zeros(1,length(f));

for index f = 1:length(f)

Y(index f) = T*y*exp(-1i*2*pi*f(index f)*n).’;

end

plot(f,abs(Y),’Linewidth’,2)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 10 / 25

Page 11: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale discreto

−0.5 0 0.50

5

10

15

20

25Trasformata centrata in f = 0 Hz

f

Y(f

)

(a)

0 0.2 0.4 0.6 0.8 10

5

10

15

20

25Trasformata centrata in f = 1/T

fY

(f)

(b)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 11 / 25

Page 12: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale continuo

Y (f ) =

∫ +∞

−∞

y(t)e−j2πftdt , f ∈ R

Come prima Y (f ) va approssimato alla versione discreta:

Y (kF ) ≃

∫ +∞

−∞

y(t)e−j2πkFtdt , k ∈ Z, F piccolo a piacere

≃ T

+∞∑

n=−∞

y(nT )e−j2πknFT, k ∈ Z, F e T piccoli a piacere

Come prima, si puo scegliere se graficare Y (kF ) nell’intervallo[

−Fp

2 ,+Fp

2

]

oppure in [0,Fp], con Fp = 1T.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 12 / 25

Page 13: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale continuo

In Matlab, applicando la definizione:

T = 0.02;

M = 20;

t = -M:T:M;

y = 3*sinc(30*t);

F = 0.01;

F max = 1/2/T;

f = -F max:F:F max; % f = 0:F:2*F max;

Y = zeros(1,length(f));

for index f = 1:length(f)

Y(index f) = T*y*exp(-1i*2*pi*f(index f)*t).’;

end

plot(f,abs(Y),’Linewidth’,2)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 13 / 25

Page 14: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier - segnale continuo

−40 −20 0 20 400

0.02

0.04

0.06

0.08

0.1

0.12Trasformata centrata in f = 0 Hz

f

Y(f

)

(c)

0 10 20 30 40 500

0.02

0.04

0.06

0.08

0.1

0.12Trasformata centrata in f = 1/T

fY

(f)

(d)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 14 / 25

Page 15: Segnali e Sistemi Laboratorio Matlab

Trasformata di Fourier con fft

Matlab utilizza l’algoritmo FFT per calcolare la trasformata discreta diFourier (DFT). Con il comando

Y = fft(y);

si calcola la trasformata di y in [0,Fp]; mentre con

Y = fftshift(fft(y));

si calcola la trasformata in[

−Fp

2 ,+Fp

2

]

.

E anche possibile specificare il numero di punti N con cui valutare la DFT:

Y = fft(y,N); Y = fftshift(fft(y,N));

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 15 / 25

Page 16: Segnali e Sistemi Laboratorio Matlab

Convoluzione - segnali discreti

Siano a(n) e b(n) due segnali discreti a supporto finito (T = 1).

a ∗ b (n) =

+∞∑

k=−∞

b(n − k)a(k) , n ∈ Z

In Matlab, si usa il comando conv:

a = [5 -2 -1 0 3];

x a = -2:2; % supporto di a

b = [-2 1 -1];

x b = 0:2; % supporto di b

c = conv(a,b);

x c = -2:4; % supporto di c

figure;

stem(x c,c,’Linewidth’,2);−2 −1 0 1 2 3 4

−10

−5

0

5

10

n

c(n)

convoluzione tra a e b

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 16 / 25

Page 17: Segnali e Sistemi Laboratorio Matlab

Convoluzione - segnali continui

f ∗ g (t) =

∫ +∞

−∞

f (t − τ)g(τ)dτ , t ∈ R

Si approssima il segnale convoluzione (continuo) con la sua versionediscreta:

f ∗ g (nT ) ≃

∫ +∞

−∞

f (nT − τ)g(τ)dτ , n ∈ Z, T piccolo a piacere

≃ T

+∞∑

k=−∞

f (nT − kT )g(kT ) , n, k ∈ Z, T piccolo a piacere

ATTENZIONE: ora T 6= 1 e va considerato nel calcolo della convoluzione.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 17 / 25

Page 18: Segnali e Sistemi Laboratorio Matlab

Convoluzione - segnali continui

In Matlab:

T = 0.002;

M = 30;

t = 0:T:M;

h = exp(-t);

x = cos(t);

y = T*conv(h,x);

figure;

plot(t,y(1:length(t))); 0 10 20 30−1

−0.5

0

0.5

1Uscita del filtro h(t) = exp(−t)

t

y(t)

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 18 / 25

Page 19: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: SEGNALI

1 La funzione Matlab rand genera realizzazioni di una variabilealeatoria con distribuzione uniforme nell’intervallo [0, 1]. Utilizzarerand per generare numeri casuali secondo una distribuzione uniformein un intervallo arbitrario [a, b], con a < b.

2 Siano gli elementi del vettore v = -6.5:N:6.5 gli estremi di alcuniintervalli adiacenti; ad esempio, con N = 1 il primo intervallo e datoda [−6.5,−5.5], il secondo da [−5.5,−4.5] e cosı via fino all’ultimo[+5.5,+6.5]. Si scriva una funzione Matlab che approssimi unnumero reale qualsiasi definito in [−6.5,+6.5] al punto medio delsotto intervallo a cui appartiene; ad esempio, con N = 1 il numero−6.3 e approssimato da −6, mentre 0.4 e approssimato da 0. Siscelga come gestire i casi in cui il numero e l’estremo di due sottointervalli adiacenti. Si testi la funzione con vari numeri casualigenerati come nel punto precedente scegliendo a = −6.5 e b = 6.5.N.B. Scrivere la funzione il piu possibile generale, quindi con N nonnecessariamente uguale a 1.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 19 / 25

Page 20: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: AREA E ENERGIA

3 Utilizzando il codice del punto 1, generare un segnale discreto s(nT ),con n = 0, 1, . . . , 199 e T = 1, di 200 realizzazioni di una variabilealeatoria uniforme in [0, 500]. Riportare s(nT ) in una figura,calcolarne l’area e l’energia e visualizzare nella command window ivalori trovati.

4 Graficare modulo e fase del seguente segnale

y(t) =

{

cos(2t)e−0.8t+j2π0.8t , t ≥ 00, t < 0

in due subplot di un’unica figura; calcolare area ed energia di y(t) evisualizzare nella command window i valori trovati.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 20 / 25

Page 21: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: AREA E ENERGIA

5 Trovare il periodo fondamentale Tp del segnale

x(t) = cos(2πf1t) + 3 cos(2πf2t)

con f1 = 20 Hz e f2 = 80 Hz. Graficare x(t) in un intervallo pari a3Tp e calcolarne area e energia.N.B. Attenzione alla definizione di area e energia di un segnaleperiodico.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 21 / 25

Page 22: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: TRASFORMATA DI FOURIER

6 Verificare che le trasformate di Fourier ottenute applicando ladefinizione (slide 11 e 14) sono uguali a quelle ottenute con i comandiY = fft(y,N) e Y = fftshift(fft(y,N)), impostando N =

length(f).N.B. Attenzione al periodo di campionamento T , se diverso da 1.

7 Calcolare la trasformata di Fourier del segnale x(t) dell’esercizio 5 egraficarne il modulo.

8 Calcolare la trasformata di Fourier del segnale

y(t) =1

1 + t2, t ∈ R

e graficarla.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 22 / 25

Page 23: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: CONVOLUZIONE

9 Calcolare la convoluzione y(n) tra due rect discreti, x1(n) e x2(n),aventi ampiezza unitaria e supporto [0, 6] e [0, 4], rispettivamente.Graficare in tre subplot di un’unica figura i segnali x1(n), x2(n) e y(n).

10 Calcolare e graficare la convoluzione continua tra un rect causale didurata 0.5 s e un segnale esponenziale

s(t) = e−t/T0 , T0 = 0.8 s .

Si utilizzi come asse temporale l’intervallo [0, 8] s con un passo dicampionamento di T = 0.004 s.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 23 / 25

Page 24: Segnali e Sistemi Laboratorio Matlab

ESERCIZI: CONVOLUZIONE

11 Si considerino dei filtri con risposta impulsiva h(t) data da

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

con• α = −0.8 + j0.9;• α = j0.4;• α = 0.04 + j0.6;• α = 0.3;

Calcolare e graficare l’uscita y(t) di ciascun filtro quando in ingresso eapplicato un gradino unitario all’istante 0.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 24 / 25

Page 25: Segnali e Sistemi Laboratorio Matlab

Consiglio

Quando scrivete un nuovo script Matlab (non una funzione), inserite ilcomando clear all nella prima riga del codice. In questo modo tutte levariabili del Workspace eventualmente salvate in precedenza vengonorimosse evitando problemi di sovrascrittura con le nuove variabili.

Segnali e Sistemi Laboratorio Matlab 05-12-14.05.2014 25 / 25