Trasformata di Fourier discreta (DFT) e convoluzione circolare
In questa pagina 6
La trasformata di Fourier a tempo discreto (Trasformata di Fourier a tempo discretoLa trasformata di Fourier di un segnale discreto è $S(f)=\sum_nT,s(nT),e^{-i2\pi fnT}$: una funzione continua e periodica in $f$ di periodo $F_p=1/T$. L'antitrasformata è l'integrale su un periodo, $s(nT)=\int_0^{F_p}S(f)e^{i2\pi fnT}df$. Le regole sono quelle del caso continuo (traslazione, convoluzione $\leftrightarrow$ prodotto, Parseval $\sum T|s|^2=\int_0^{F_p}|S|^2$), con incremento e somma corrente al posto di derivata e integrale. Per segnali reali $S(f)=S^*(-f)$, quindi basta $[0,F_p/2]$. Esempi: $\delta\to1$, $1\to\delta_{F_p}$, rect $\to$ sinc periodico, $a^n\mathbf 1_0\to\frac T{1-ae^{-i2\pi fT}}$.Trasformata di Fourier a tempo discreto →) di un segnale è una funzione continua della frequenza: un calcolatore non può calcolarla né memorizzarla. Può invece trattare un numero finito di valori: la DFT (discrete Fourier transform) trasforma numeri in numeri e dà campioni della DTFT. In questa nota si ripassano definizione e proprietà (con , come nel corso; la trattazione con esplicito è in Trasformata di Fourier discreta (DFT) e FFTUn segnale discreto periodico di periodo $NT$ ha una trasformata discreta e periodica, la DFT: $S(kF)=\sum_{n=0}^{N-1}T,s(nT)e^{-i2\pi kn/N}$, con $F=1/(NT)$, e $s(nT)=\sum_{k=0}^{N-1}F,S(kF)e^{i2\pi kn/N}$. Dipende da soli $N$ numeri, si calcola senza approssimazioni e con la FFT costa $N\log_2N$ invece di $N^2$. I coefficienti di Fourier del segnale periodico sono $S_k=F,S(kF)$. La DFT dà anche campioni della trasformata di un segnale discreto o continuo a durata limitata (con zero-padding), ma la scalatura $T$ e l'asse delle frequenze vanno gestiti con cura.Trasformata di Fourier discreta (DFT) e FFT → e in FFT e zero-padding - TF, TFtd e asse delle pulsazioniLa FFT dei campioni di un segnale a durata finita, moltiplicata per il passo $T_c$, approssima la trasformata di Fourier: $X(\omega_k)\approx T_c,\mathtt{fft}(x,M)[k]$ con $\omega_k=\frac{2\pi k}{MT_c}$ (e fattore di fase $e^{-j\omega t_0}$ se l'asse parte da $t_0$). Lo zero-padding ($M>N$) infittisce i punti della stessa TFtd senza aggiungere informazione; la risoluzione dipende dalla durata osservata. Per un segnale reale $|X|$ è simmetrico: il picco in $k$ ha un gemello in $M-k$.FFT e zero-padding - TF, TFtd e asse delle pulsazioni →), si collega la DFT alla trasformata zeta e alla DTFT, e si studia la convoluzione circolare, che è il modo in cui la DFT "fa" la convoluzione.
Definizione
Un segnale finito si può vedere come un periodo di un segnale periodico , . Il periodo determina la risoluzione in frequenza e la trasformata è periodica con periodo ( frequenza di campionamento).
Definizione (DFT e IDFT, con ). Con la notazione (radice -esima primitiva dell'unità): e . Gli estremi delle somme possono essere qualsiasi interi consecutivi, perché i termini sono periodici.
Esempio. , : ; ; ; . Si ottiene (verificato con Python, con l'IDFT che restituisce ).
Asse delle frequenze. L'indice corrisponde alla pulsazione e alla frequenza . La risoluzione (frequency spacing) è . Gli indici rappresentano frequenze negative: e coincidono per periodicità.
Esempio (lezione). () e : e i bin stanno a ; ricade a , cioè di nuovo a per periodicità.
L'ortogonalità (somma geometrica, Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →) garantisce che l'IDFT inverta la DFT. è un numero complesso: il modulo dice quanta potenza c'è a quella frequenza, la fase di quanto è sfasata nel tempo.
DFT, trasformata zeta e DTFT
Sia un segnale aperiodico a supporto finito . La sua trasformata zeta è (Trasformata zeta - definizione e regione di convergenzaLa trasformata zeta bilatera X(z) = Σ x[n] z^{-n} associa a una sequenza una funzione della variabile complessa z, definita nella regione di convergenza (ROC), sempre una corona circolare |z| in (R1, R2). Segnale a durata finita: ROC tutto il piano (tranne eventualmente 0 e ∞); causale: |z| > R1 (teorema di Abel); anticausale: |z| < R2; bilatero: intersezione, se non vuota. La stessa espressione algebrica con ROC diverse è la trasformata di segnali diversi: la ROC fa parte della trasformata. Sulla circonferenza unitaria, se è nella ROC, X(e^{jθ}) è la trasformata di Fourier. Le ROC non contengono poli.Trasformata zeta - definizione e regione di convergenza →) e la DTFT è .
Teorema (DFT = campionamento della zeta sulla circonferenza). Per , la DFT a punti di è cioè la zeta valutata nelle radici -esime dell'unità: punti equispaziati sulla circonferenza unitaria a partire da .
Esempio. e : , con moduli .
Il collegamento si capisce passando dal periodo: la DFT è la trasformata di Fourier del segnale periodico ripetizione periodica di (periodic repetition) con periodo . Infatti, con e , perché al variare di e di l'indice percorre una volta sola tutti gli interi.
Aliasing temporale. Campionare la DTFT in frequenza equivale a ripetere periodicamente il segnale nel tempo (dualità del Teorema del campionamento, interpolazione e aliasingTeorema di Shannon: un segnale a banda limitata $\omega_M$ si ricostruisce esattamente dai campioni se $T_c<\pi/\omega_M$ (frequenza di campionamento maggiore di quella di Nyquist $2f_{\max}$), con la formula di interpolazione ideale $x(t)=\sum_nx(nT_c)\operatorname{sinc}\left(\frac{t-nT_c}{T_c}\right)$. Sotto Nyquist c'è aliasing: le frequenze alte si confondono con quelle basse e l'informazione è persa.Teorema del campionamento, interpolazione e aliasing →).
- Se le repliche non si sovrappongono: per e si recupera esattamente dall'IDFT; campioni della DTFT bastano a descrivere .
- Se (o ha durata infinita) le repliche si sovrappongono (temporal aliasing): l'IDFT dà .
Esempio (aliasing). () e : (gli ultimi due campioni si ripiegano sull'inizio).
Zero-padding
Se si aggiungono zeri in coda. Non si aggiunge informazione ma si infittisce il campionamento della stessa DTFT: più punti sulla curva continua, per vedere meglio dove sono i picchi. Non si migliora la risoluzione (capacità di separare due righe vicine), che dipende dalla durata del segnale osservato (Analisi spettrale con la DFT - finestre e leakageAnalizzare lo spettro di un segnale con la DFT vuol dire osservarne solo L campioni (finestra rettangolare) e campionare in frequenza la DTFT. Una sinusoide non dà una riga ma il nucleo di Dirichlet della finestra centrato in w0: lobo principale largo 4pi/L e lobi laterali (il primo a -13.3 dB). Due toni più vicini della mezza larghezza del lobo non si separano (risoluzione, che dipende solo da L), e i lobi laterali di un tono mascherano i toni deboli (leakage). La DFT campiona la DTFT a 2pi k/N: l'ampiezza è corretta solo se il tono cade su un bin (periodi interi nella finestra), altrimenti si perde fino a 3.9 dB; lo zero-padding infittisce i campioni ma non migliora la risoluzione. Le finestre rastremate (Hann, Hamming, Blackman) abbassano i lobi laterali (-31, -42, -58 dB) a prezzo di un lobo principale più largo.Analisi spettrale con la DFT - finestre e leakage →).
Esempio. (due campioni). Con : . Con (zero-padding): , otto punti della stessa curva , e , , , . In generale raddoppiando i valori di indice pari coincidono con i vecchi e quelli dispari sono nuovi.
Grafico interattivo: Modulo della DTFT di x = {1,1,1,1} (curva) e della sua DFT a N = 8 punti (punti): zero-padding = più campioni della stessa curva. Con N = 4 la DFT sarebbe {4, 0, 0, 0}
Proprietà
Le proprietà sono quelle della trasformata di Fourier, con la differenza che gli indici sono modulo : è il resto della divisione per (per esempio , ).
Proprietà della DFT (, punti).
- Linearità: .
- Traslazione circolare (circular shift): : il modulo non cambia, la fase sì. Traslare di campioni (o multipli) non cambia il segnale.
- Simmetria coniugata: se è reale, (): parte reale pari, parte immaginaria dispari, modulo pari, fase dispari. Allora è reale e, se è pari, anche è reale. Bastano valori complessi per descrivere la DFT di un segnale reale.
- Convoluzione circolare: .
- Parseval: .
Esempio (traslazione). , . Il segnale traslato di un campione, , ha DFT , uguale a : i moduli sono invariati ().
Esempio (simmetria e Parseval). Per : ✓ e ✓.
Esempio (sinusoide su un bin). con : e tutti gli altri zero. In generale , e se o le due righe coincidono e danno .
Per la dimostrazione della convoluzione circolare: partendo da si antitrasforma , si sostituisce e si scambiano le somme: , dove l'ultima somma è l'IDFT di calcolata in , periodica di periodo .
Convoluzione circolare e convoluzione lineare
La convoluzione circolare (circular convolution) è una convoluzione "su una circonferenza": per ogni si prende riflessa e traslata, ma gli indici fuori da rientrano dall'altra parte. Nell'esempio con : perché , , . È commutativa e si calcola come IDFT del prodotto delle DFT.
Per un filtro FIR serve invece la convoluzione lineare, di lunghezza (Sistemi LTI e convoluzione discretaUn sistema lineare e tempo-invariante (LTI) è completamente descritto dalla sua risposta impulsiva h[n]: y[n] = Σ x[k] h[n-k] = x[n] * h[n] (somma di convoluzione). Si ricava scomponendo x in impulsi traslati e usando linearità e invarianza. La convoluzione è commutativa, associativa e distributiva; una cascata di LTI equivale a un solo filtro con h = h1 * h2 e l'ordine non conta. Se x ha lunghezza N e h lunghezza L, y ha lunghezza N+L-1. Si calcola col metodo della finestra scorrevole o a tabella. I FIR sono LTI; altri sistemi (n·x[n], x[-n], x²) non lo sono.Sistemi LTI e convoluzione discreta →). Le due coincidono solo se non c'è aliasing temporale.
Teorema (convoluzione lineare tramite DFT). Se ha lunghezza e lunghezza , e si sceglie allora, dopo aver completato e con zeri fino a campioni, la convoluzione circolare a punti coincide con quella lineare: per . Con la coda di (gli ultimi campioni) si ripiega sull'inizio.
Esempio (lezione). e . Convoluzione lineare: , lunghezza . Convoluzione circolare con : (lunghezza ): infatti , , e : le somme valgono tutte . Per evitare l'aliasing si completa con zeri a (, ) e si ottiene più uno zero.
Esempio (filtro corto). , , : , mentre : l'ultimo campione si somma al primo ().
Grafico interattivo: Convoluzione lineare di x = {1,2,3,4} con h = {1,1,1,1}: y = {1, 3, 6, 10, 9, 7, 4}, lunghezza 7
Grafico interattivo: Convoluzione circolare a N = 4 degli stessi segnali: y = {10, 10, 10, 10}. Gli ultimi 3 campioni della lineare (9, 7, 4) si sommano ai primi (1, 3, 6)
Quando conviene la DFT. Con la FFT il costo della convoluzione cala molto per filtri lunghi; il confronto dei costi e i metodi per segnali lunghi sono nella nota Convoluzione a blocchi - overlap-add e overlap-saveLa convoluzione lineare y = x * h (h lungo M) si può calcolare con la FFT scegliendo N >= Dx + M - 1 (potenza di 2): costo per campione circa 3 k log2 N contro k M del calcolo diretto, quindi la FFT conviene per M abbastanza grande (con Dx circa M, già da M = 16). Per segnali lunghi o infiniti si divide x in blocchi. Overlap-add: blocchi disgiunti di lunghezza L, ognuno convoluto con h (lunghezza L+M-1 con FFT di N >= L+M-1) e le code di M-1 campioni si sommano. Overlap-save: blocchi di N campioni sovrapposti di M-1, convoluzione circolare, si scartano i primi M-1 campioni di ogni uscita (corrotti dall'aliasing). Stesso costo.Convoluzione a blocchi - overlap-add e overlap-save →.
La FFT
Calcolare la DFT con la definizione richiede, per ogni , moltiplicazioni complesse e somme: in tutto operazioni. La FFT (fast Fourier transform) è una famiglia di algoritmi con costo , basati su "divide et impera" (divide and conquer): si spezza il problema in due di dimensione metà, si risolvono e si ricombinano le soluzioni con costo lineare; iterando fino a dimensione ci sono livelli.
Decimazione in tempo (decimation in time, ). Si dividono i campioni in quelli di indice pari e dispari . Con : dove e sono due DFT a punti, periodiche di periodo . Poiché , bastano e per : Questa coppia di operazioni (una moltiplicazione, una somma e una differenza) è la farfalla (butterfly). La ricombinazione costa moltiplicazioni per livello, in tutto moltiplicazioni invece di .
Esempio. : pari danno , dispari danno , con e . Allora , , , : coincide con la DFT calcolata sopra. Per : moltiplicazioni contro , un fattore .
Domande d'esame
- Definire la DFT e spiegarne il legame con la DTFT e con la trasformata zeta. Che cosa succede se il segnale è più lungo di ? Traccia: , radici -esime dell'unità; ripetizione periodica e dimostrazione del cambio di indice; nessun aliasing, aliasing temporale (esempio numerico); zero-padding infittisce ma non migliora la risoluzione.
- Enunciare la proprietà della convoluzione circolare e le condizioni sotto cui coincide con la lineare. Traccia: con derivazione; lunghezza ; con zero-padding; esempio e ( contro ).
- Ricavare la FFT a decimazione in tempo e il suo costo. Traccia: separazione pari/dispari, , e , moltiplicazioni, confronto con .
Versione ripasso
- Definizione. , , con . Asse delle frequenze: , , risoluzione ; gli indici sono frequenze negative.
- Esempio. : .
- DFT come campionamento della zeta. Per : , cioè punti equispaziati della DTFT, a partire da . Equivale a ripetere con periodo .
- Aliasing temporale. Se non c'è aliasing e si recupera dall'IDFT. Se le repliche si sovrappongono. Esempio: con dà .
- Zero-padding. Infittisce i campioni della stessa DTFT, ma non migliora la risoluzione, che dipende dalla durata . Esempio: con ha valori di indice pari uguali a quelli con .
- Proprietà (indici modulo ). Linearità. Traslazione circolare: , il modulo non cambia. Simmetria coniugata per reale: ; e, per pari, sono reali. Convoluzione circolare: . Parseval: .
- Esempio di Parseval. .
- Convoluzione circolare. Gli indici fuori da rientrano dall'altra parte. Con : .
- Teorema. Se ha lunghezza e lunghezza , con e zeri di completamento, la circolare coincide con la lineare. Con la coda si ripiega sull'inizio.
- Esempio di lezione. , : lineare ; circolare con dà ; con si ottiene la lineare più uno zero.
- Filtro corto. , , : circolare , lineare .
- FFT a decimazione in tempo (). Con : e , dove e sono DFT a punti dei campioni pari e dispari. Costo moltiplicazioni contro . Esempio: per si ha contro .
- Notazione. : e . Gli estremi delle somme possono essere interi consecutivi qualsiasi, perché i termini sono periodici.
- Esempio di calcolo. Per : e .
- Ortogonalità. : garantisce che l'IDFT inverta la DFT. Il modulo di dice quanta potenza c'è a quella frequenza, la fase lo sfasamento nel tempo.
- Esempio di aliasing. Con l'IDFT dà .
- Esempio di DFT. con : , moduli .
- Traslazione. Il segnale ha DFT , uguale a .
- Sinusoide su un bin. : con , , si ha .
- Dimostrazione della convoluzione circolare. Si antitrasforma , si sostituisce e si scambiano le somme: resta .
- Costo. Filtri lunghi: la convoluzione con la FFT costa molto meno; metodi per segnali lunghi in Convoluzione a blocchi - overlap-add e overlap-saveLa convoluzione lineare y = x * h (h lungo M) si può calcolare con la FFT scegliendo N >= Dx + M - 1 (potenza di 2): costo per campione circa 3 k log2 N contro k M del calcolo diretto, quindi la FFT conviene per M abbastanza grande (con Dx circa M, già da M = 16). Per segnali lunghi o infiniti si divide x in blocchi. Overlap-add: blocchi disgiunti di lunghezza L, ognuno convoluto con h (lunghezza L+M-1 con FFT di N >= L+M-1) e le code di M-1 campioni si sommano. Overlap-save: blocchi di N campioni sovrapposti di M-1, convoluzione circolare, si scartano i primi M-1 campioni di ogni uscita (corrotti dall'aliasing). Stesso costo.Convoluzione a blocchi - overlap-add e overlap-save →.
- Errore tipico. Pensare che lo zero-padding migliori la risoluzione: aggiunge campioni alla stessa curva.