laboratorio matlab: teoria dei segnali - infarinato.it eldasebi_lezione_04_05... · laboratorio...

39
LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati e segnali Biomedici 2016/2017

Upload: nguyenhanh

Post on 19-Feb-2019

277 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

LABORATORIO MATLAB:

TEORIA DEI SEGNALI

Segnali deterministici e stocasticiElaborazione di dati e segnali Biomedici

2016/2017

Page 2: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

2

Operazioni elementari sui segnali TCDECOMPOSIZIONE DI UN SEGNALE

Ogni segnale né pari né dispari può essere decomposto come somma di una componente pari Pa[x(·)]ed una dispariDi x · .

x(·) = Pa[x(·)]+Di[x(·)]

ESERCIZIOScrivere un programma che raffiguri su uno stesso grafico tre segnali:f(t) = exp(sin(3t)), con t ∈ [−5,5] a passo di campionamento 0.02, la sua parte pari e la sua parte dispari.

Pa[x(·)] =x · + x(−(·))

2Di[x(·)] =

x · − x(−(·))

2

N.B: Y = wrev(X) reverses the vector X. (capovolgere il vettore x corrisponde, partendo da un segnale x(t), a y=x(-t))

Page 3: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

3

Operazioni elementari sui segnali TCVETTORE DI TEMPI

Le funzioni continue, del tempo (s) oppure della frequenza (Hz), vengono rappresentate dai loro campioni,estratti con frequenza opportuna, organizzati in un vettore colonna.In Matlab le funzioni non sono ideali, e quindi continue e graficamente si ha una simulazione della continuitàdata dall’interpolazione dei campioni calcolati.Considerato un segnale x(t), possiamo valutare questo segnale su un intervallo temporale centrato sul tempozero, ad esempio [−D/2,D/2], campionato con passo dT.

N.B: Y = ceil(X) rounds each element of X to the nearest integer greater than or equal to that element.

ESERCIZIOScrivere una funzione intervallo che restituisca un vettore dei tempi con numero dispari di elementi e conelemento centrale pari a zero, del tipo:t = [−X, ..., −dx, 0, dx, ..., X]T

La funzione si presenta nella forma (X definisce gli estremi dell’intervallo, dx il passo di campionamento):function x=intervallo(X,dx)

Verificare la funzione digitando nella Command Window:>> t = intervallo(10, 0.01);

Page 4: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

4

Scrivere due funzioni che creino rispettivamente un segnale rettangolare ed unotriangolare fornendo in ingresso l’intervallo (vettore x) in cui dovranno essere calcolate. Lefunzioni si presentano nella forma:

function [y] = rect( x ) function [y] = tri( x )

Applicare la funzione tri al vettore t generato nell’esempio precedente:>>x = tri(t)>> sig_plot(x,t,1)

sig_plot è una funzione fornita dal docente che permette di ottenere un risultato grafico ottimale, che vuole in ingresso ilsegnale da rappresentare, l’intervallo in cui esso è definito ed il numero della figura in cui verrà rappresentato

Segnali notevoli

Page 5: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

5

Figura

Page 6: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

6

La funzione già esistente in Matlab per ottenere un’onda quadra è rectpuls.

rectpuls(T) generates samples of a continuous, aperiodic,unity-height rectangle at the points specified in array T, centeredabout T=0. By default, the rectangle has width 1. Note that theinterval of non-zero amplitude is defined to be open on the right,i.e., rectpuls(-0.5)=1 while rectpuls(0.5)=0.

rectpuls(T,W) generates a rectangle of width W.

Segnali notevoli

La funzione sawtooth genera un’onda triangolare.

sawtooth(T,WIDTH) generates a modified triangle wave where WIDTH, ascalar parameter between 0 and 1, determines the fraction between 0and 2*pi at which the maximum occurs. The function increases from -1to 1 on the interval 0 to WIDTH*2*pi, then decreases linearly from 1back to -1 on the interval WIDTH*2*pi to 2*pi. Thus WIDTH = .5 givesyou a triangle wave, symmetric about time instant pi with peak amplitudeof one. sawtooth(T,1) is equivalent to sawtooth(T).

Page 7: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

7

È possibile scalare e traslare le funzioni con un formalismo del tutto simile a quello usato in matematica.Con:>> t=intervallo(20,0.02);>>x = 2 * tri( (t-5) / 5 );si ottiene la funzione x(t) = 2tri[(t-5)/5] valutata sull' intervallo t = [-20; 20].

Segnali notevoli

Page 8: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

8

Scrivere due funzioni che realizzino rispettivamente un impulso centrato sullo zero di un vettore dei tempi del tipo t = [−X, ..., −dx, 0, dx, ..., X]T ed un treno di impulsi a passo T calcolato sull’intervallo t.

Il risultato sarà un’appossimazione degli impulsi, poichè avranno ampiezza finita: calcolarel’ampiezza in modo da garantire che l’impulso abbia area unitaria e quindi sia posta pari al reciprocodell’intervallo di campionamento.Le funzioni si presentano nella forma:

function y = delta( x )function x = treno( t, T )

Verificare le funzioni digitando nella Command Window:>> Int = intervallo(10, 0.01);>>A=3;>>a=treno(Int,A);>> sig_plot(a,Int,1)

Segnali notevoli

Page 9: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

9

function [ x ] = treno( t, T )

%definisco costanti%

dt=t(2)-t(1);

%controllo se T è coerente con l'intervallo%

if(dt>T)

fprintf('\nerrore! scegliere un T più grande\n');

end

tmax=…;

tmin=…; %estremi dell’intervallo temporale

x=…; %inizializzo il vettore finale

k=0;

while k*T<=… %condizione da verificare per l’inserimento degli impulse nelle posizioni multiple di T

x=x+delta(…); %posiziono l’impulso

k=; %faccio avanzare il contatore

end

k=-1;

while … %creo il treno di impulse nel semi-intervallo negativo

end

end

Suggerimenti

CONTROLLO

Page 10: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

10

Figura

Page 11: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

11

Area ed energia di un segnale TCScrivere un programma che mostri la figura su un periodo del segnale periodico (con passo di campionamento pari a 0.02):

e ne calcoli area ed energia.Il segnale è periodico di periodo 2π. Per calcolare area ed energia avendo a che fare con campioni di segnale (vettore) è necessario effettuare le approssimazioni:

AREA

ENERGIA

con T passo di campionamento.

)(sin)(sin 3

2

0

2

0

3 kTTdttT

k

2

2

0

2

0

2)()( kTfTdttf

T

k

)(sin)( 3 ttf

Page 12: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

12

Figura

Page 13: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

13

Energia di un segnale TDScrivere un programma che mostri la figura del segnale tempo discreto (sequenza):

f[nT]=e−0.02nTsin[nT](ho una sequenza, per cui T=1) e ne calcoli l’energia (su un intervallo finito, ad esempio tra 0 e 200).

N.B. stem(Y) plots the data sequence Y as stems from the x axis terminated with circles for the data value.

Page 14: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

14

Convoluzione TD

Consideriamo due sequenze a[n] e b[n] a supporto limitato. La loro convoluzione èdefinita come

Il segnale b risulta ribaltato (b(-k)) come se venisse ruotato di 180 gradi attorno alprimo campione. Avendo a che fare con segnali di lunghezza finita la sommatoria avràin realtà estremi limitati e ciascun elemento n del segnale finale (convoluzione) saràdato dalla sommatoria di più contributi che vedono il segnale a in posizione kmoltiplicato di volta in volta per il segnale b in posizione n-k: mentre il segnale a èfisso, il segnale b scorre avanzando da sinistra verso destra. K andrà da 0 al valore dellalunghezza del risultato pari alla somma della lunghezza dei singoli segnali a e b meno 1.

][][])[( kaknbnbak

Page 15: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

15

Convoluzione tempo TD% Segnali a e b

a = [2 1 -3 1];

x_a = 0:3; % supporto di a

b = [-5 3 -1];

x_b = 0:2; % supporto di b

% Segnale ottenuto ribaltando b

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

% Grafici dei segnali di interesse

figure , title ('Segnali di interesse ')

subplot (1,3,1)

stem (x_a ,a)

axis ([ -4 6 -5 3 ])

legend ('a(n)')

grid on;

subplot (1,3,2)

stem (x_b ,b)

axis ([ -4 6 -5 3 ])

legend ('b(n)')

grid on;

subplot (1,3,3)

stem ( x_b_meno , b_meno ,'r')

axis ([ -4 6 -5 3 ])

legend ('b(-n)')

grid on;

* Y = fliplr(X) returns X with the order of elements flipped left to right along the second dimension.

Page 16: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

16

Convoluzione tempo TD

%% Rappresentazione grafica della

convoluzione

figure , title (' Convoluzione a*b')

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

c = conv (a,b);

for i = 0: n_c -1

subplot (3 ,2,i +1)

stem (x_a ,a)

hold on

stem ( x_b_meno + i, b_meno ,'r')

axis ([ -4 6 -5 3 ])

grid on;

end

Il primo campione di b a incrociarsi con a è l’ultimo campione del vettore

ribaltato

n=0 n=1

n=2 n=3

n=4 n=5

Page 17: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

17

Convoluzione tempo TD

%% Grafico della convoluzione

%c = a*b

figure

stem (0:n_c-1,c,'b')

title ('c(n)')

grid on;

Page 18: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

18

Convoluzione tempo TC

Si ragiona nello stesso modo del caso TD, poiché lavoriamo con vettori: cambiano unicamente i due argomentidella convoluzione, che noi interpretiamo come funzioni continue e che MATLAB andrà a graficare concontinuità interpolando i campioni.La convoluzione per segnali continui è definita come:

Se l’integrale esiste scegliendo un periodo di campionamento T sufficientemente piccolo si può scrivere:

Quest’approssimazione permette di ricondurci al caso discreto.

)()()()())(( kTgkTtfTdgtftgf

dgtftgf )()())((

Page 19: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

19

ESERCIZIOConsideriamo due segnali rettangolari scalati in ampiezza, traslati e su base diversa da 1, campionati a passoT=0.02:

s1 t = 2 rectt−1.5

2s2 t =

1

3rect

t

3

Scrivere le due rect utilizzando la funzione implementata precedentemente che è di seguito riportata (ricordareche x è un vettore dei tempi, su cui costruisco la rect, del tipo t = [−X, ..., −dx, 0, dx, ..., X] ):

function y = rect( x )

y = (abs(x) < .5) + .5 * (abs(x) == .5);

end

Calcolare la loro convoluzione (senza utilizzare il comando conv) con uno script che definisca le due rect erichiami una funzione che si presenta nella forma:

function X=convoluzione(A,B)

Rappresentare su tre figure diverse le due rect e il risultato della funzione convoluzione.

Convoluzione tempo TC

Sono tutti vettori colonna

Page 20: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

20

Convoluzione tempo TCSUGGERIMENTI

function X=convoluzione(A,B)la=length(A);lb=length(B);X =……; % inizializzare il vettore risultato con la lunghezza che avrà B_rib =……; % ribalta il segnale B

for k=…… % costruire elemento per elemento di Xtmp=[zeros(1,……),B_rib,zeros(1,……)]; % vettore riga che per ogni ciclo includa B

ribaltato preceduto sempre da più zeri e seguito sempre da meno zeri

X(k)=……; % calcolo della convoluzione tramite somma del prodotto elemento per elemento tra A e solo un pezzo del vettore tmp (lunga quanto il vettore A e che parte dall’elemento in posizione lb)

endend

Page 21: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

21

Convoluzione tempo TC

CONVOLUZIONE

S1(t) S2(t)

FIGURE FINALI

Page 22: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

22

Convoluzione tempo TCScrivere uno script che, utilizzando la funzione convoluzione implementata, calcoli la convoluzione tra una sinc2(t) e una δ(t-10) e la rappresenti graficamente.

))((sin 2 tc

tempo(s)

Page 23: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

23

Lo strumento matematico che consente di trasferire lo studio dei segnali e dei sistemi dal dominio deltempo al dominio della frequenza e la trasformata di Fourier. Il vantaggio che deriva dall’introduzione deidue domini e la possibilità di cambiare la prospettiva con la quale si osserva un dato fenomeno.

Analisi dei segnali nel dominio della frequenza

La relazione che definisce la trasformata di Fourier non e direttamente implementabile mediante un elaboratore digitale di segnale, sia perche essa richiede l’analisi di segnali continui, x(t) e X(f), sia perche l’integrale si estende all’infinito e richiederebbe dunque un numero infinito di dati da elaborare.

Per poter effettuare tale trasformazione con un sistema digitale sono dunque necessarie tre operazioni fondamentali:

Campionamento (Segnali discreti)il troncamento del segnale la discretizzazione dell’asse delle frequenze.

Ciascuna di queste operazioni può influenzare significativamente l’attendibilita del risultato dell’analisi.

Page 24: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

24

Trasformata discreta di FourierN

knjN

n

nexX k21

0

La sequenza Xk prende il nome di Trasformata discreta di FourierDFT (Discrete Fourier Transform)NB: Nella formula non compare T

10 Nk

La relazione che permette di calcolare gli N campioni di xn partendodagli N campioni di Xk prende il nome di

Trasformata discreta di Fourier inversaIDFT (Inverse Discrete Fourier Transform).

N

knjN

k

keXN

xn21

0

1

10 Nn

Page 25: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

25

La DFT avrà lo stesso numero di campioni delsegnale nel tempo, ma distanziati di unintervallo Δf = Fs/N con Fs pari allafrequenza di campionamento ed N numerodi elementi del vettore dei tempi t

Xn

Campionamento nel tempo e in frequenza

Page 26: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

26

Trasformata discreta di Fourier

La trasformata di Fourier viene implementata in Matlab utilizzando il comando fft(x)che calcola la DFT del vettore x utilizzando l’algoritmo FFT.

Il successo di questo strumento è in buona parte dovuto all'esistenza di un algoritmo,noto come FFT (Fast Fourier Transform, i.e. trasformata veloce di Fourier), chepermette di calcolare la DFT in maniera veloce.

La FFT consente di decomporre il problema in sottoproblemi di complessità minore.Con questa si riduce il numero delle operazioni computazionali da N2 a NlogNnell’ipotesi che N sia una potenza di 2. Nel caso in cui il numero di campioni nonsoddisfi l’ipotesi si aggiungono dei campioni nulli (operazione di Zero Padding).

Page 27: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

27

La sintassi: fft(x,N) calcola la FFT su N punti, aggiungendo zeri se x ha meno di N punti, e troncando se ne ha di più.

Poiche in generale la X(f) cioè Y e complessa, essa puo essere descritta mediante gli spettri di ampiezza e fase. Per semplicita di trattazione, le figure che riportano gli andamenti degli spettri in frequenza dei segnali complessi X(f) si riferiranno, implicitamente, soltanto alle loro ampiezze.

Trasformata discreta di Fourier

Page 28: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

28

Trasformata discreta di FourierCOMANDI

fft(x) :

La trasformata di Fourier di un segnale discreto è un segnale periodico nel dominio delle frequenze. Matlab lavorasempre nel dominio discreto, quindi usando la funzione fft si ottengono sempre segnali periodici in frequenza. Ad

esempio: dato un segnale di N campioni, definito rispetto al vettore di tempo t=[-N/2 : +N/2-1]*t0 ( t0 =passo di

scansione), la sua trasformata di Fourier sarà un segnale periodico nelle frequenze che si ripeterà ogni N campioni .Per questo motivo dopo una fft il segnale che si ottiene è quello in figura 1 dove i campioni relativi a frequenzenegative, vengono riportati in fondo, nella seconda metà del vettore .

Page 29: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

29

Trasformata discreta di FourierCOMANDI

fftshift(fft(x)) :Shift zero-frequency component to center of spectrum

La funzione fftshift permette di riordinare le frequenze e rappresentare così il segnale trasformato al centro delvettore delle frequenze, come ci si aspetta.

Page 30: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

30

Trasformata discreta di FourierFIGURA FINALE

Page 31: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

31

Trasformata discreta di FourierScrivere una funzione che calcoli la trasformata di Fourier di un segnale nella forma:

function [X, f] = sig_fft(x,t) con

x segnale definito nel dominio del tempot vettore dei tempi del tipo t = [−X, ..., −dx, 0, dx, ..., X]T

X trasformata del segnale xF vettore delle frequenze nell’intervallo [-F/2,F/2], con F=1/dT pari alla frequenza di campionamento

Verificare la funzione digitando nella Command Window:>>tempo=[-10:0.01:10];>>sign=tri(tempo);>> [S, freq] = sig_fft(sign,tempo); >>sig_plot(abs(S),freq,1) % sig_plot grafica su due curve diverse la parte reale e la parte immaginaria

Page 32: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

32

SUGGERIMENTI

function [X, f] = sig_fft( x, t )% costanti per i calcoliN = ……; % lunghezza di xdT = …….; % tempo di campionamentoF = …….; % frequenza di campionamentodF = …….; % distanza tra i campioni in frequenza

% calcolo DFTX = …….; % nel calcolo della DFT considerare la moltiplicazione per il fattore di scalatura dT

% trovo frequenze: l’intervallo delle frequenze deve avere lo stesso numero di elementi di XM = floor(N/2); % arrotondo all’intero più vicino verso sinistraf …….; % intervallo delle frequenze simmetrico

end

Trasformata discreta di Fourier

Page 33: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

33

Campionamento del segnaleIl campionamento del segnale consiste nella moltiplicazione del segnale stesso per un treno di impulsi.La frequenza di Nyquist è la minima frequenza alla quale campionare il segnale per evitare distorsioni e perdita diinformazioni sul segnale (aliasing): data una funzione la cui trasformata di Fourier sia nulla al di fuori di un certointervallo di frequenze (ovvero un segnale a banda limitata) la frequenza di Nyquist corrisponde al doppio della suafrequenza massima.

Calcolare la DFT del segnale x(t) = sinc2(t) moltiplicato per un treno di impulsi con frequenza pari a 10 Hz.

t = intervallo(10, .01);

x = ……….%genero il segnale

F = …….%frequenza di campionamento treno di

impulsi

y=……….%genero il treno

z=….%moltiplicazione nel tempo tra i

segnali

figure

[Z,fz]=…..%calcolo DFT con funzione sig_fft

sig_plot(..,…,..); %visualizzazione

DFT

FREQUENZA

Page 34: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

34

Filtraggio Passa-Banda[rr,cc]=size(fz);

W=zeros(size(fz));

f0=-3;

f1=-5;

f2=3;

f3=5; %ho definite le frequenze di taglio del filtro

for i = 1:rr

ff = abs(fz(i));

if ff >= f0 && ff <= f1 && f1 > f0

W(i)=(ff-f0)/(f1-f0);

end

if ff >= f1 && ff <= f2

W(i)=1;

end

if ff >= f2 && ff <= f3 && f3 > f2

W(i)=1+(-ff+f2)/(f3-f2);

end

end

X=Z.*W; %moltiplico il segnale per il filtro creato

Con il seguente filtro elimino le repliche fuori dalla banda principale

Page 35: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

35

Si e gia visto che l’analisi di Fourier si applica formalmente a segnali di durata infinitamente estesa e pertanto anche lasequenza dei campioni che rappresenta il segnale in forma discreta dovra essere teoricamente di lunghezza infinita.Tale ipotesi non e ovviamente realizzabile nella pratica. In generale, con riferimento a un processo di campionamentoreale, la sequenza dei campioni avra necessariamente un inizio e una fine.

Per esaminare il problema e utile considerare il segnale di durata limitata come una porzione del segnale generico x(t),prelevata attraverso una opportuna finestra temporale w(t) (window), detta anche finestra di troncamento o diosservazione.

Troncamento del segnaleDispersione spettrale (leakage)

L’effetto del troncamento sul segnale si puo rappresentare nel seguente modo:xw (t) = x(t) ⋅ w(t)

La trasformata di Fourier del segnale troncato risulta dalla convoluzione degli spettri:Xw(f)= X(f)∗W(f)

La convoluzione della trasformata X(f) del segnale con la trasformata W(f) della finestra di troncamento introduce un nuovo tipo di distorsione, detta dispersione spettrale (spectral leakage).

Page 36: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

36

Troncamento del segnaleDispersione spettrale (leakage)

In pratica se lo spettro del segnale originario X(f) contiene delle transizioni nette, ad esempio componenti armonicheimpulsive come nel caso di un segnale periodico nel tempo, tali transizioni vengono smussate e lo spettro del segnaleperiodico troncato si disperde in frequenza, tanto piu quanto piu e stretta la finestra di troncamento.

L’entita della dispersione in frequenza dipende dalla durata Tw della finestra di osservazione e dal suo andamentotemporale. In particolare l’andamento nel tempo della finestra di troncamento determina l’ampiezza dei lobi laterali delladispersione e risulta quindi direttamente responsabile della accuratezza con cui viene stimato lo spettro del segnaletroncato. Sotto questo aspetto, concreti vantaggi possono essere ottenuti ampliando, entro limiti accettabili dal punto divista pratico, la durata Tw o utilizzando finestre temporali non rettangolari, ma con transizione piu graduale delle estremita (smoothing windows).

Page 37: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

37

t=0:0.0002:63*0.2e-3; % vettore dei tempi

s1=4*cos(2*pi*1000*t+0.2*pi); % generazione del segnale

x dato

s2=1.5*cos(2*pi*1500*t); % dalla somma di due sinusoidi

x=s1+s2;

L=length(x);

NFFT= 2^nextpow2(L);

X=abs(fft(x,NFFT)); % calcolo dell'FFT su NFFT punti

f=linspace(-1/0.0002*1/2,1/0.0002*1/2,NFFT); % vettore

delle frequenze

plot(f,X);

xlabel('Frequenza [Hz]');

ylabel('Ampiezza');

Il seguente script calcola e visualizza la FFT di un segnale composto dalla somma di due sinusoidi rispettivamente a 1000 e 1500 Hz.

NFFT=64

N.B. La risoluzione spettrale (Δf, distanza tra i campioni in frequenza) non permette la visualizzazione dei lobi secondari, ma si nota un allargamento alla base del lobo principale. Lo spettro del segnale x infinito (non finestrato) mostra invece due nette armoniche alle frequenze 1000 e 1500 Hz

Troncamento del segnale

Page 38: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

38

NFFT=256

FFT del segnale x=s1+s2

precedente valutata su 256

campioni

Troncamento del segnale

Page 39: LABORATORIO MATLAB: TEORIA DEI SEGNALI - infarinato.it ELDASEBI_Lezione_04_05... · LABORATORIO MATLAB: TEORIA DEI SEGNALI Segnali deterministici e stocastici Elaborazione di dati

39

t=[-0.005:0.0002:0.005];% vettore dei

tempi;

x=...% generazione del segnale x dato

plot(t,x)

figure

dT=% tempo di campionamento

f=% vettore delle frequenze;

X=… %calcolo dell'FFT su 256 punti

X_shift=…%calcolo frequenze shiftate al

centro dello spettro

plot(…,…)% visualizzo il segnale

Scrivere uno script che calcoli e visualizzi la FFT di un segnale composto da una sinusoide a 500 Hz

Esercizio