Matematica Open Source http://www.extrabyte.info Quaderni di Matematica Computazionale 017 La trasformata discreta di Fourier in ambiente Mathematica Marcello Colozzo
Indice 1 Campionamento di un segnale 1.1 Aliasing...................................... La trasformata discreta di Fourier (DFT) 10.1 Troncamento di un segnale............................ 10. Campionamento di un segnale troncato..................... 1.3 Cenni sull algoritmo FFT............................ 17 1
Capitolo 1 Campionamento di un segnale 1.1 Aliasing Sia dato un segnale rappresentato da una funzione y(t) continua a tratti in (,+ ) ed ivi assolutamente sommabile: y(t) dt < + (1.1) In tali ipotesi, y(t) ammette lo sviluppo in integrale di Fourier: y(t) = ŷ(f)e jπft df, (j = 1), (1.) dove ŷ(f) è la trasformata di Fourier, detta anche densità spettrale o semplicemente spettro di y(t): ŷ(f) = y(t)e jπft dt (1.3) Passiamo dalla variabile continua t alla variabile discreta t k così definita: t k = kt c, (k Z), (1.4) essendo T c > 0 l intervallo di campionamento. Consideriamo ora un treno di impulsi di ampiezza u 0 : + U (t) = u 0 δ(t kt c ), (1.5) k= ovvero un insieme di infinite delte di Dirac centrate in kt c, come illustrato in fig. 1.1 Si osservi che misurando U in Volt (V), l ampiezza u 0 risulta espressa in V s i.e. V/Hz, giacché la delta di Dirac ha le dimensioni dell inverso del suo argomento. Lo spettro di U (t) è: Û (f) = u 0 = u 0 + k= = u 0 + k= + k= e jπfktc δ(t kt c )e jπft dt (1.6) δ(t kt c )e jπft dt
CAPITOLO 1. CAMPIOAMETO DI U SEGALE U 4T c 3T c T c T c T c T c 3T c 4T c t Figura 1.1: Rappresentazione grafica del treno di impulsi di ampiezza u 0 (eq. (1.5)). Per esplicitare la sommatoria a secondo membro dell ultimo termine, dimostriamo la seguente proposizione: Proposizione 1 1 T + k= kπ j e T t = + k= δ(t kt) Dimostrazione. Sia data la funzione g(t) = + k= δ(t kt), (1.7) periodica di periodo T. Anziché scrivere lo sviluppo in serie di Fourier di g(t) nella forma consueta: + c k e jωkt, (ω k = kπ ), (1.8) T scriviamolo come: k= + k= cosicché i coefficienti di Fourier sono dati da c k = 1 T T/ c k e jω kt, (1.9) T/ g(t)e jω kt dt (1.10) Anche se la (1.7) non è una funzione nel senso ordinario del termine, supponiamo che la serie converga: g(t) = + k= 3 c k e jω kt (1.11)
CAPITOLO 1. CAMPIOAMETO DI U SEGALE Per determinare i coefficienti c k osserviamo che in [ T, T ] è g(t) = δ(t), onde: Pertanto T/ c k = 1 δ(t)e jωkt dt = 1, k Z (1.1) T T/ T }{{} =1 g(t) = 1 T + k= kπ j e T t, (1.13) da cui l asserto. el caso in esame definiamo la frequenza di campionamento f c = T 1 c : Û (f) = u 0 + k= kπ + j e fc f = u 0 f c k= δ(f kf c ) (1.14) e consegue che lo spettro del treno di impulsi unitari (u 0 = 1V/Hz, eq. 1.5) è un treno di impulsi di ampiezza f c centrati in kf c (cfr. fig 1.). U f c f c f c f c f Figura 1.: Spettro del treno di impulsi rappresentati dall eq. ( 1.5). Ciò premesso, il campionamento del segnale y(t) è y c (t) = y(t)u (t) = y(t) Qui abbiamo posto u 0 = 1V/Hz. Segue y c (t) = + k= + k= δ(t kt c ) (1.15) y(kt c )δ(t kt c ) (1.16) Ad esempio, supponiamo che y(t) sia il segnale plottato in fig. 1.3. Un campionamento di ampiezza T c restituisce il segnale graficato in fig. 1.4. 4
CAPITOLO 1. CAMPIOAMETO DI U SEGALE y t Figura 1.3: Esempio di segnale y(t). y Τ t Figura 1.4: Campionamento ideale del segnale di fig. 1.3 5
CAPITOLO 1. CAMPIOAMETO DI U SEGALE Denotando con F l operazione che restituisce la trasformata di Fourier, abbiamo le seguenti relazioni simboliche: y(t) U (t) F ŷ(f) (1.17) F Û (f) La trasformata di Fourier del segnale campionato è: Come è noto: ŷ c (f) = y(t)u (t) dove denota il prodotto di convoluzione: Quindi lo spettro di y c (t) è Cioè y(t)u (t)e jπft dt F ŷ(f) Û (f), ŷ(f) Û (f) = ŷ(ξ)û (f ξ)dξ (1.18) ŷ c (f) = ŷ(f) Û (f) = f c = f c + k= ŷ(ξ) + k= ŷ(ξ)δ(f kf c ξ)dξ } {{ } =ŷ(f kf c) ŷ c (f) = f c + k= δ(f kf c ξ)dξ (1.19) ŷ(f kf c ) (1.0) L argomento della sommatoria a secondo membro della (1.0), ossia il termine: ŷ(f kf c ) (1.1) per un assegnato k, è una traslazione di ŷ(f) nella direzione positiva (k > 0) o negativa (k < 0) dell asse f e di ampiezza kf c. e consegue che lo spettro del segnale campionato è il risultato di infinite traslazioni di ŷ(f) lungo l asse delle frequenze. Riferiamoci in particolare a un segnale limitato in banda, cioè: f min,f max ŷ(f) 0, f / [f min,f max ] (1.) In altri termini, il contributo dominante allo spettro del segnale proviene dalle frequenze appartenenti a un intervallo limitato [f min,f max ]. Dal momento che la frequenza di campionamento f c è l ampiezza minima delle traslazioni di ŷ(f) che generano lo spettro di y c (t), si ha che se è verificata la condizione: f c f def = f max f min, (1.3) le predette traslazioni non si sovrappongono. Se invece la condizione (1.3) è violata, cioè se f c < f, 6
CAPITOLO 1. CAMPIOAMETO DI U SEGALE le traslazioni si sovrappongono dando luogo al cosiddetto aliasing. Da un punto di vista formale sono interessanti i casi limite: e T c 0 + = f c + (1.4) T c + = f c 0 + (1.5) Il primo ricostruisce il segnale continuo, in cui vediamo che lo spettro viene traslato all infinito, ovvero rimane identico a se stesso. el secondo, invece, per ogni k Z lo spettro viene traslato con un ampiezza nulla i.e. si sovrappone a se stesso infinite volte. Riassumendo, siamo passati da un segnale y(t) a un segnale campionato y c (t), e abbiamo dimostrato che lo spettro di y c (t) si ottiene traslando lo spettro di y(t) di kf c = k/t c, per ogni k intero relativo. Ad esempio, consideriamo un segnale sinusoidale modulato in ampiezza da una gaussiana (fig. 1.5): y(t) = Ae ν 0 t cos(πf 0 t), (ν 0 > 0) (1.6) 1.0 y 0.5 1.0 0.5 0.5 1.0 t 0.5 1.0 Figura 1.5: Esempio di segnale sinusoidale modulato in ampiezza da una gaussiana. Abbiamo già calcolato al seguente link la trasformata di Fourier di un segnale simile. Aggiustando i vari termini, otteniamo: ŷ(f) = A e π (f f 0 ) ν 0 (1.7) ν 0 Troviamo quindi una gaussiana centrata in f 0, come illustrato in fig. 1.6. Si tratta dunque di un segnale a banda limitata, giacchè: ŷ(f) 0, f / [f min,f max ], (1.8) dove f min = f 0 ν 0, f max = f 0 +ν 0 (1.9) 7
CAPITOLO 1. CAMPIOAMETO DI U SEGALE y f f min Ν 0 f 0 f max Ν 0 Figura 1.6: Spettro del segnale (1.6) Eseguiamo un campionamento di y(t): y c (t) = A + k= e ν 0 k T c cos(πf0 kt c )δ(t kt c ) (1.30) Ad esempio, se T c = 10 4 s, ν 0 = Hz, f 0 = 8Hz, otteniamo il campionamento illustrato in fig. 1.7. 1.0000 y c 0.9998 0.9996 0.9994 0.999 0.9990 T c T c t Figura 1.7: Campionamento del segnale (1.30) con T c = 10 4 s, ν 0 = Hz, f 0 = 8Hz. e consegue che lo spettro del segnale (1.30) è: ŷ c (f) = Af c ν 0 + k= 8 (f kfc f0 e π ) ν 0 (1.31)
CAPITOLO 1. CAMPIOAMETO DI U SEGALE La frequenza di campionamento è f c = 10 4 Hz, per cui la condizione (1.3) è abbondantemente verificata: f c = 10 4 Hz > f = f max f min = ν 0 = 4Hz Ciò implica l assenza di aliasing. Proviamo ora a campionare con T c = 10 s = f c = 10 1 Hz < f, plottandoilcorrispondentespettroinfig. 1.8dacuivediamocheletraslazioni di ampiezza f 0 ±f c si sovrappongono, generando aliasing. y f f 0 f c f 0 f 0 f c Figura 1.8: Spettro del segnale campionato (1.30) con f c = 10 1 Hz, ν 0 = Hz, f 0 = 8Hz. Si notino le zone di sovrapposizione (aliasing), giacché f c < f. 9
Capitolo La trasformata discreta di Fourier (DFT).1 Troncamento di un segnale Il processo di campionamento di un segnale y(t) esaminato nella sezione precedente è un campionamento di tipo ideale, in quanto si estende su tutto l asse reale (, + ). Infatti, l estensione infinita dell asse dei tempi implica l infinità, sia pur numerabile, degli istanti discreti t k. Tale circostanza distrugge la possibilità di utilizzare un calcolatore elettronico per eseguire un analisi in frequenza del segnale campionato. Da qui la necessità di un processo di campionamento reale che sia in grado di restituire un numero finito di istanti discreti. È chiaro che ciò può essere realizzato solo troncando il segnale, ovvero moltiplicandolo per una finestra temporale: { [ 1, se t τ F τ (t) =, ] τ, (.1) 0, altrimenti plottata in fig..1. 1 Τ Τ t Figura.1: Finestra temporale di durata τ. 10
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) Il segnale troncato è: { [ y(t), se t τ y τ (t) = y(t)f τ (t) = 0, altrimenti, τ ] (.) Ciò implica ŷ τ (f) = ŷ(f) ˆF τ (f) (.3) Ad esempio, sia y(t) = Acos(πf 0 t) che in notazione complessa si scrive: y(t) = Ae jπf 0t (.4) Quindi ŷ(f) = A e jπ(f f 0)t dt (.5) Come è noto e jkx dx = πδ(x) Eseguendo il cambio di variabile x = πt nell integrale (.5): ŷ(f) = Aδ(f f 0 ) (.6) Come c era da aspettarsi, lo spettro di y(t) è una delta di Dirac centrata in f 0. Il segnale troncato è: { Ae jπf 0 y τ (t) = t, se t [ τ, ] τ, (.7) 0, altrimenti per cui Cioè ŷ τ (f) = A ŷ τ (f) = Aτ +τ/ τ/ e jπ(f f 0)t dt sin[π(f f 0 )τ], (.8) π(f f 0 ) L andamento di ŷ τ (f) è riportato in fig... Il troncamento determina una dispersione in frequenza quantificata da δf = f 1 f 1, dove f k = f 0 + k τ, (k Z {0}) sono gli zeri di ŷ τ (f). Quindi δf = τ, (.9) che è infinitesima nel limite di durata infinita, riproducendo il risultato (.6). 11
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) AΤ y f 1 f 1 f Figura.: Spettro del segnale troncato (.).. Campionamento di un segnale troncato Esenguiamo un troncamento di un segnale y(t) utilizzando la finestra temporale: F τ (t) = { 1, se t [0,τ] 0, altrimenti, (.10) Fissiamo +1 istanti: 0 = t 0 < t 1 <... < t k <... < t = τ (.11) Topologicamente la (.11) è una decomposizione dell intervallo chiuso [0, τ], nel senso che [0,τ] = L ampiezza della decomposizione (.1) è: 1 k=0 [t k,t k+1 ] [t k,t k +1] =, k k = [t k,t k+1 ] (.1) max (t k+1 t k ) (.13) k {0,1,..., 1} Per semplicità supponiamo che gli istanti(.11) siano equispaziati, cosicché l ampiezza(.13) si identifica con il tempo di campionamento: T c = t k+1 t k = τ, (.14) per cui t k = kt c = k τ, (k = 0,1,...,) (.15) Considerando nuovamente un treno di impulsi con u 0 = 1V/Hz: 1 U (t) = δ(t kt c ), (.16) k=0 1
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) si ha il segnale troncato e campionato: Lo spettro è Cioè 1 y τ,c (t) = y τ (t)u (t) = y(kt c )δ(t kt c ) (.17) ŷ τ,c (f) = 1 = y(kt c ) k=0 k=0 y τ,c (t)e jπft dt δ(t kt c )e jπft dt } {{ } e jπfktc 1 ŷ τ,c (f) = y(kt c )e jkπ f fc (.18) k=0 In altri termini, lo spettro del segnale troncato e campionato è una combinazione lineare di esponenziali complessi. I coefficienti della combinazione sono le ampiezze dei singoli campioni. Olre al già citato fenomeno dell aliasing, si verifica una distorsione in frequenza dovuta al trancamento. Sia nel caso del segnale campionato y c (t) che nel caso del segnale troncato e campionato y τ,c (t), la frequenza varia con continuità da a +, e può essere discretizzata. L algoritmo risultante che consente di passare dal dominio del tempo t k = kt c al dominio delle frequenze f k è noto con l acronimo DFT: Discrete Fourier Transform, ovvero Trasformata Discreta di Fourier. Lasciando cadere i pedici τ, c, la discretizzazione (.11) restituisce la sequenza di campioni: y 0,y 1,y,...,y, (.19) dove y k = y(kt c ) con k = 0,1,,..., 1. Da un punto di vista formale, possiamo ritenere la predetta sequenza periodica di periodo τ = T c, cioè di frequenza f τ = 1 = f c T c (.0) Dobbiamo allora riscrivere la (.18) dopo aver discretizzato la variabile continua f: f f k = kf τ, (k = 0,1,..., 1), (.1) onde f k = k f c, (.) dove abbiamo tenuto conto della (.0). Risulta 1 ŷ h = y k e j π hk (.3) k=0 Qui è ŷ h = ŷ(f h ) con h = 0,1,..., 1. La sequenza di numeri complessi ŷ 1,ŷ,...,ŷ, (.4) 13
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) definisce la DFT di y τ,c (t), avendo ripristinato i pedici. Più precisamente, il numero complesso ŷ k si chiama componente spettrale di ordine k. el caso continuo: y τ,c (t) = ŷ τ,c (f)e jπft df, (.5) la trasformata di Fourier ŷ τ,c (f) ha le dimensioni di y(t) diviso una frequenza, in quanto ŷ τ,c (f) è una densità spettrale (ampiezza delle componenti spettrali per intervallo unitario di frequenza). el caso discreto, invece, la grandezza ŷ k ha le stesse dimensioni di y; ciò perchè ŷ k non è una densità spettrale ma l ampiezza della componente medesima. Invertendo la (.3): y k = 1 1 ŷ h e j π hk (.6) h=0 È preferibile scrivere le (.3)-(.6) nella forma simmetrica: 1 y k = 1 ŷ h e j π hk ŷ k = 1 h=0 1 h=0 y h e j π hk (.7) Le componenti spettrali che forniscono un informazione sulla distribuzione delle frequenze, sono quelle con k = 0,1,...,. Le rimanenti sono una conseguenza dell aliasing. Dalla (.) segue che le frequenze significative sono: La frequenza f 1 = f c, f = f c,...,f / = f c f / = f c è detta frequenza di folding. Applichiamo queste nozioni allo studio del segnale: (.8) (.9) y(t) = Ae ν 0 t sin(πf 0 t), (ν 0 > 0) (.30) Troncando il segnale con la finestra temporale (.10) otteniamo l andamento plottato in fig..3 Assumiamo τ = 1s, dopodiché fissiamo = 50 che a sua volta implica un tempo di campionamento T c = 10 1 s. Il conseguente campionamento restituisce il grafico di fig..4, dove abbiamo assunto f 0 = Hz. Dopo aver esplicitato i singoli campioni y k = y(kt c ) possiamo determinare la DFT. A tale scopo utilizziamo il software Mathematica che dispone del comando Fourier[] per il calcolo della DFT. In fig.5. plottiamo ŷ k in funzione di k, da cui vediamo un picco a k = 3, seguito da un picco speculare. La fig..6 riporta un grafico simile, precisamente ŷ k in funzione di f k. Come ci si aspettava il contributo dominante al segnale proviene dalla frequenza f 3 = 3 50 f c = 3 50 50 1 = 3Hz f 0 (.31) 14
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) y Τ Τ t Figura.3: Troncamento del segnale (.30). y Τ,c Τ t Figura.4: Segnale (.30) troncato e campionato. Il troncamento è a τ = 1s, mentre i rimanenti parametri sono: ν 0 = 1Hz, f 0 = Hz. Il numero di intervalli parziali è = 50, per cui il tempo di campionamento è T c = 10 1 s. 15
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT) y k.0 1.5 1.0 0.5 3 k Figura.5: Spettro (in funzione di k) ottenuto tramite DFT del segnale (.3). y k.0 1.5 1.0 0.5 f 3 f folding f 49 f k Figura.6: Spettro (in funzione di k) ottenuto tramite DFT del segnale (.3). 16
CAPITOLO. LA TRASFORMATA DISCRETA DI FOURIER (DFT).3 Cenni sull algoritmo FFT A partire dalle (.7) definiamo i seguenti vettori appartenenti allo spazio vettoriale C : y 0 ŷ 0 y = y 1..., ŷ = ŷ 1... (.3) y 1 ŷ 1 Dalla seconda delle (.7) segue 1 e j π hk ŷ k = y h, (.33) h=0 dove M () è la seguente matrice quadrata di ordine : ( M () = M () hk ) = ŷ = M () y, (.34) 1 1 1 1... 1 1 e j π e j 4π e j 4π e j 8π e... j π ( 1) e... j 4π ( 1)............... 1 e j π ( 1) e j 8π ( 1)... e j π ( 1) (.35) Ad esempio, per = : M () = ( 1 1 1 e jπ ) = ( 1 1 1 1 ), (.36) onde: ŷ = ( 1 1 1 e jπ ) ( y0 y 1 ) = ( y0 + y 1 y 0 y 1 ) (.37) *** Il calcolo della DFT richiede dunque la moltiplicazione righe per colonne di una matrice quadratadiordine conunvettorecolonnaa componenti, richiedendounnumerodioperazioni dell ordine di. Si comprende allora l elevato costo computazionale dell algoritmo DFT quando si ha un elevato numero di campioni. Per alleggerire il carico computazionale sono stati sviluppati vari algoritmi noto sotto l acronimo FFT, riducendo il numero di operazioni a O( ln). 17