Analisi spettrale con la DFT - finestre e leakage
In questa pagina 7
L'analisi di Fourier (o spettrale) è l'applicazione principale della DFT: dato un segnale si vuole capire quali frequenze contiene e con quale ampiezza. In teoria servirebbe la DTFT di su tutto (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 →); in pratica si dispone solo di un tratto finito di campioni e si può calcolare solo la DFT (Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →). Le due approssimazioni, finestratura nel tempo e campionamento in frequenza, producono artefatti che bisogna saper riconoscere: lobi laterali, perdita di risoluzione, errore di ampiezza. Il ragionamento è lo stesso per le immagini e per l'audio; per segnali la cui frequenza cambia nel tempo si usa la STFT (Trasformata di Fourier a tempo breve e spettrogrammaPer un segnale lungo il cui contenuto in frequenza cambia nel tempo si calcolano tante DFT brevi: X[k, l] = sum_{n=0}^{L-1} w[n] x[l+n] e^{-j2pi kn/N}, con finestra di analisi w di lunghezza L, istante l = m R (passo R, di solito L/2) e DFT a N >= L punti. Il modulo (o i dB) di X[k, l] come immagine tempo-frequenza è lo spettrogramma. La finestra impone un compromesso: lunga = ottima risoluzione in frequenza (Delta w circa 8pi/L per Hann) ma transizioni temporali sfocate su circa L/2 campioni; corta = buona localizzazione nel tempo ma righe vicine fuse. Si provano più lunghezze.Trasformata di Fourier a tempo breve e spettrogramma →).
L'effetto della finestra
Un esponenziale complesso
Sia , , con costante complessa. La sua DTFT è un treno di impulsi periodico: . Dalla posizione dell'impulso si legge e dalla sua area : ogni parametro è determinato. Se però si osservano solo campioni, il segnale osservato è La moltiplicazione nel tempo diventa convoluzione periodica in frequenza (Proprietà della trasformata di FourierCon le proprietà (linearità, simmetrie, ritardo $\leftrightarrow e^{-j\omega t_0}$, modulazione $\leftrightarrow$ traslazione in frequenza, scala, dualità, convoluzione $\leftrightarrow$ prodotto, Parseval $E=\frac1{2\pi}\int|X|^2$, derivata $\leftrightarrow j\omega$, moltiplicazione per $t\leftrightarrow j,d/d\omega$, integrazione) quasi tutte le trasformate si ottengono da poche coppie base senza integrare.Proprietà della trasformata di Fourier →) e l'impulso si converte in una copia della trasformata della finestra: L'ultima uguaglianza è la somma di una serie geometrica di ragione (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 →), con lo stesso passaggio di . Il rapporto di seni è il nucleo di Dirichlet (Dirichlet kernel), una "sinc periodica".
Fatto (spettro di una sinusoide osservata per campioni). Il picco di è in e vale ; si annulla in (). La parte tra i due zeri è il lobo principale (main lobe), di larghezza ; le parti tra zeri consecutivi successivi sono i lobi laterali (side lobes), larghi . Il primo lobo laterale vale circa il del principale, cioè , qualunque sia .
Esempio. Per e : picco , zeri a multipli di rad, lobo principale largo rad. Il massimo del primo lobo laterale è (calcolo numerico: per grande).
Aumentando , il lobo principale si restringe (larghezza ) e si avvicina all'impulso ideale, ma l'ampiezza relativa dei lobi laterali non diminuisce.
Più componenti: risoluzione e leakage
Se , per linearità : le due copie del nucleo si sommano e interferiscono. Ne derivano due problemi.
- Risoluzione (resolution): se e sono troppo vicine, i due lobi principali si fondono in un solo picco e non si riconoscono due righe. Regola pratica: due toni si separano se distano più di circa la mezza larghezza del lobo principale, cioè per la finestra rettangolare. La risoluzione dipende solo dalla durata dell'osservazione e dalla finestra, non dallo zero-padding.
- Leakage (spectral leakage, "perdita" di energia): l'energia di un tono sfugge nei lobi laterali e può coprire (mask) un tono più debole vicino, rendendo errata anche la stima delle ampiezze.
Per ridurre l'interferenza si prende più grande possibile (lobi principali stretti) oppure si cambia la finestra, come sotto.
Esempio (lab 3). con , , e : il tono centrale è rispetto agli altri. Per vederlo bisogna che i lobi laterali dei due toni forti stiano sotto (con un margine, per esempio ): non lo fa né la finestra rettangolare () né quella di Hamming ().
Il campionamento in frequenza
Calcolando la DFT a punti del segnale osservato si ottengono i valori , : campioni della DTFT a . Un tono a qualsiasi non coincide in generale con uno di questi punti, e i campioni possono mancare il vertice del lobo principale: l'ampiezza stimata è sbagliata.
Condizione di picco corretto. Con (DFT di lunghezza pari alla finestra), l'ampiezza è letta bene solo se con intero (il tono cade su un bin). Equivalente: la finestra contiene un numero intero di periodi del tono. Allora il lobo principale è campionato nel vertice e tutti gli altri campioni cadono sugli zeri: la DFT è una riga sola.
La ragione: per i campioni e coincidono, quindi la ripetizione periodica del tratto osservato non ha salti e il tono è esattamente periodico di periodo .
Esempio (verificato con Python). , .
- (su un bin): per e per tutti gli altri.
- (a metà tra due bin): , e tanti altri valori non nulli (leakage). Il picco campionato è invece di : perdita di (scalloping loss).
- : picco ().
Grafico interattivo: Modulo della DFT a 32 punti di un tono con L = 32 che cade su un bin (k0 = 4): una sola riga, valore 32
Grafico interattivo: Modulo della DFT a 32 punti di un tono a metà tra due bin (k0 = 4,5): picchi 20,38 nei bin 4 e 5 (invece di 32) e leakage su tutti gli altri
Zero-padding
Per campionare la DTFT più fitta si completa il segnale con zeri e si calcola una DFT a punti. Il massimo viene campionato più vicino al vertice e l'ampiezza è stimata meglio. Con , (cioè ):
| 32 | 64 | 128 | 1024 | |
|---|---|---|---|---|
| picco campionato | ||||
| posizione del picco (in bin da ) | 4 | 4.5 | 4.5 | 4.5 |
Con il punto è proprio un campione. Lo zero-padding non aggiunge informazione: i campioni sono punti della stessa curva (il nucleo di Dirichlet), quindi non separa due toni che la finestra non separa, ma permette di localizzare meglio il picco.
Grafico interattivo: Modulo della DTFT di un tono a k0 = 4,5 con L = 32 (curva) e DFT a 32 punti (punti): i campioni 3, 4, 5, 6 non cadono sul picco 32 della curva, che è a metà tra il bin 4 e il 5
Finestre rastremate
La finestra rettangolare ha il lobo principale più stretto (miglior risoluzione) ma i lobi laterali più alti. Una finestra rastremata (tapered window) scende dolcemente a zero ai bordi e ha lobi laterali molto più bassi, a prezzo di un lobo principale più largo: minor leakage, minor risoluzione.
Compromesso (leakage contro risoluzione). Lobi laterali più bassi si pagano con un lobo principale più largo; non esiste una finestra che migliori entrambi. Si prova più finestre e più lunghezze e si confrontano gli spettri.
Con simmetrica di lunghezza (), centro in :
| finestra | formula | larghezza del lobo principale (zero-zero) | massimo lobo laterale |
|---|---|---|---|
| rettangolare | |||
| triangolare (Bartlett) | |||
| Hann (Hanning) | |||
| Hamming | (slide: ) | ||
| Blackman | (slide: ) |
I valori sono stati ricalcolati numericamente su finestre con (FFT a punti); i livelli dei lobi laterali dipendono poco da , le larghezze sono volte . La Hann è una finestra "coseno rialzato" al ; la Hamming ha un piedistallo () che sposta il primo lobo laterale più in basso ma lascia lobi lontani meno decrescenti; la Blackman aggiunge un termine correttivo. Per i valori di attenuazione in banda proibita e per la finestra regolabile di Kaiser si veda Progetto di filtri FIR con il metodo delle finestreUn filtro FIR a fase lineare di tipo I (ordine $N$ pari, $h[n]=h[N-n]$) ha risposta $H(e^{j\hat\omega})=e^{-j\hat\omega N/2}\bar H(\hat\omega)$ con ampiezza $\bar H(\hat\omega)=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega)$. Per approssimare un'ampiezza desiderata $D(\hat\omega)$ (passa-basso: $1$ in banda passante, $0$ in banda oscura, con tolleranze $\delta_p,\delta_s$ e frequenze $\hat\omega_p,\hat\omega_s$) ci sono tre metodi. Finestre: si tronca la serie di Fourier di $D$, cioè $h[n]=h_d[n-N/2],w[n]$ con $h_d[n]=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\frac{\hat\omega_0 n}{\pi}$; la rettangolare è ottima in errore quadratico ma dà il fenomeno di Gibbs (9%, $21$ dB), le finestre rastremate (Hann, Hamming, Blackman, Kaiser) abbassano i lobi laterali allargando la transizione ($\hat\omega_s-\hat\omega_p\simeq\alpha,2\pi/L$). Campionamento in frequenza: $h=\mathrm{IDFT}$ dei campioni di $D$, esatto solo sui campioni. Minimax (Parks-McClellan): errore pesato minimo nel caso peggiore, soluzione equiripple con almeno $r+2$ alternanze, ordine più basso a parità di specifiche.Progetto di filtri FIR con il metodo delle finestre →.
Le trasformate delle finestre a coseno si ottengono dal nucleo di Dirichlet: poiché con è la somma di tre termini, nella forma centrata dove è il nucleo senza il fattore di fase (che i tre termini hanno in comune). I lobi laterali dei tre termini si cancellano in parte, da cui lobi laterali bassi.
Grafico interattivo: Modulo (dB) della trasformata di quattro finestre di lunghezza L = 33: la rettangolare ha lobo stretto ma lobi laterali a -13 dB; Hann, Hamming e Blackman abbassano i lobi (-31, -42, -58 dB) e allargano il lobo principale
Esempio (lab 3, tono debole a ). Con campioni (lunghezza ottenuta dalla formula del progetto, con , , , che dà ) e finestra di Kaiser con , il tono a emerge a sopra un leakage di . Con la finestra rettangolare e con la Hamming della stessa lunghezza il massimo attorno a è a e a , cioè molto sopra il tono da : è leakage dei toni forti (nelle zone vicine il leakage arriva a e ) e il tono debole non si distingue (valori calcolati con Python). Il codice è in Esercizio - Laboratorio 3, DFT e analisi spettrale.
Segnali sinusoidali reali
Un segnale sinusoidale reale è la somma di due esponenziali a pulsazioni opposte ( e ). Tutto quanto detto vale per ciascuno: servono due coppie di lobi e basta stimare quello in perché l'altro è il simmetrico (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 →). Con finestra rettangolare e tono su un bin: , quindi . Con una finestra generica il picco vale e l'ampiezza è (guadagno coerente).
Esempio. , , : e ✓. Con una finestra di Hann ( per ) si leggerebbe circa .
Esempio: due toni vicini
Si osservano campioni di con una finestra di Hann centrata nell'istante (come nelle slide). La separazione è . La finestra di Hann ha lobo principale largo , mezza larghezza :
- : , i lobi si fondono: un solo picco, a , di altezza .
- : : due picchi separati, a (altezza ) e (altezza ).
Grafico interattivo: Hann con L = 75: i due toni a 0,2π e 0,227π (verticali) si fondono in un solo picco a 0,217π
Grafico interattivo: Hann con L = 301: due picchi distinti a 0,2π (altezza 75) e a 0,227π (altezza 112)
Nota. Se due toni sono più vicini della risoluzione, il risultato dipende anche dalla fase relativa con cui i due lobi si sommano: lo stesso con un'altra posizione della finestra può dare un picco unico oppure due gobbe false a e (interferenza distruttiva a metà), come si verifica numericamente. Per questo si dice che sotto la risoluzione non si può dire se ci siano uno o due toni.
Come procedere in pratica
- Fissare la risoluzione voluta e scegliere con della finestra scelta (circa per la rettangolare, per Hann/Hamming, per Blackman, in modo che il lobo principale sia più stretto della separazione).
- Scegliere la finestra in base al dinamismo necessario: se un tono forte può nascondere uno debole di serve una finestra con lobi laterali sotto (Blackman, Kaiser).
- Scegliere (potenza di due, zero-padding) per leggere meglio i picchi.
- Correggere l'ampiezza con il guadagno coerente e ricordare la perdita di se il tono non cade su un bin (tolta con lo zero-padding o con finestre a picco piatto).
Domande d'esame
- Spiegare l'effetto della finestratura sullo spettro di una sinusoide e definire risoluzione e leakage. Traccia: , ; nucleo di Dirichlet, zeri in , lobo principale , lobi laterali con il primo a indipendente da ; due toni: interferenza, risoluzione legata a , leakage che maschera toni deboli.
- Perché la DFT di una sinusoide può dare un'ampiezza sbagliata? Come si corregge? Traccia: DFT = campioni della DTFT a ; solo se (periodi interi) il vertice è campionato; altrimenti perdita fino a ; zero-padding infittisce i campioni ma non migliora la risoluzione; esempio numerico , (picco invece di ).
- Confrontare finestra rettangolare e finestre rastremate. Traccia: compromesso lobo principale/lobi laterali; tabella con larghezze e livelli ; esempio del tono debole a (Kaiser sì, Hamming no).
Versione ripasso
- Finestratura. Osservare campioni è moltiplicare per . Per : , con (nucleo di Dirichlet).
- Lobi. Il picco vale in . Zeri in . Lobo principale largo ; lobi laterali larghi . Il primo lobo laterale è dB, indipendentemente da . Esempio: , lobo principale largo rad.
- Effetto di . Crescendo il lobo principale si restringe, ma l'ampiezza relativa dei lobi laterali non scende.
- Risoluzione. Due toni si separano se distano più di circa , cioè la mezza larghezza del lobo principale. Dipende da e dalla finestra, non dallo zero-padding.
- Leakage. L'energia di un tono nei lobi laterali può mascherare un tono più debole vicino. Esempio di lab 3: un tono a dB sotto gli altri è invisibile con finestra rettangolare ( dB) o Hamming ( dB).
- Campionamento in frequenza. La DFT a punti campiona la DTFT a . Con il picco è letto bene solo se il tono cade su un bin, cioè se la finestra contiene un numero intero di periodi.
- Perdita di scalloping. Con : tono su un bin () dà ; a metà tra due bin () dà nei bin e , perdita di dB; con dà ( dB).
- Zero-padding. Con , : il picco campionato è con e con , , . Non separa toni che la finestra non separa, ma localizza meglio il picco.
- Finestre rastremate. Scendono a zero ai bordi: lobi laterali più bassi, lobo principale più largo. Compromesso leakage contro risoluzione. Valori (lobo principale zero-zero; lobo laterale massimo): rettangolare , dB; triangolare , dB; Hann , dB; Hamming , dB; Blackman , dB.
- Formule. Hann ; Hamming ; Blackman . Per Kaiser si veda Progetto di filtri FIR con il metodo delle finestreUn filtro FIR a fase lineare di tipo I (ordine $N$ pari, $h[n]=h[N-n]$) ha risposta $H(e^{j\hat\omega})=e^{-j\hat\omega N/2}\bar H(\hat\omega)$ con ampiezza $\bar H(\hat\omega)=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega)$. Per approssimare un'ampiezza desiderata $D(\hat\omega)$ (passa-basso: $1$ in banda passante, $0$ in banda oscura, con tolleranze $\delta_p,\delta_s$ e frequenze $\hat\omega_p,\hat\omega_s$) ci sono tre metodi. Finestre: si tronca la serie di Fourier di $D$, cioè $h[n]=h_d[n-N/2],w[n]$ con $h_d[n]=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\frac{\hat\omega_0 n}{\pi}$; la rettangolare è ottima in errore quadratico ma dà il fenomeno di Gibbs (9%, $21$ dB), le finestre rastremate (Hann, Hamming, Blackman, Kaiser) abbassano i lobi laterali allargando la transizione ($\hat\omega_s-\hat\omega_p\simeq\alpha,2\pi/L$). Campionamento in frequenza: $h=\mathrm{IDFT}$ dei campioni di $D$, esatto solo sui campioni. Minimax (Parks-McClellan): errore pesato minimo nel caso peggiore, soluzione equiripple con almeno $r+2$ alternanze, ordine più basso a parità di specifiche.Progetto di filtri FIR con il metodo delle finestre →.
- Perché Hann ha lobi bassi. La trasformata è la somma di tre nuclei di Dirichlet, , con : i lobi laterali si cancellano in parte.
- Esempio di toni vicini. con Hann: separazione . Con () un picco solo a ; con () due picchi a e .
- Fase relativa. Sotto la risoluzione il risultato dipende dalla fase con cui i lobi si sommano: non si può dire se ci siano uno o due toni.
- Sinusoide reale. Con finestra rettangolare e tono su un bin, , quindi . Con finestra generica . Esempio: , , .
- Procedura. Scegliere dalla risoluzione voluta (circa per la rettangolare, per Hann/Hamming, per Blackman, in unità di ); scegliere la finestra in base al dinamismo; ; correggere l'ampiezza con il guadagno coerente, ricordando la perdita fino a dB.
- Esempio lab 3 con Kaiser. Tono debole a dB: con campioni, , kHz, kHz, si ottiene ; finestra di Kaiser con . Il tono a kHz emerge a dB sopra un leakage di dB. Con rettangolare e Hamming della stessa lunghezza il massimo attorno a kHz è a e dB: il tono debole non si distingue.
- Lunghezza di Kaiser. La formula dà la lunghezza minima per una data attenuazione e larghezza di transizione .
- Stessa sinusoide con Hann. Con , , e finestra di Hann (), il picco letto vale circa invece di : il guadagno coerente va corretto.
- Tono in e . Il coseno reale è somma di due esponenziali, con e : basta stimare il lobo in .
- Limite dello spettro. Un'analisi con campioni misura le frequenze con precisione : con un segnale che cambia nel tempo, si usa la STFT (Trasformata di Fourier a tempo breve e spettrogrammaPer un segnale lungo il cui contenuto in frequenza cambia nel tempo si calcolano tante DFT brevi: X[k, l] = sum_{n=0}^{L-1} w[n] x[l+n] e^{-j2pi kn/N}, con finestra di analisi w di lunghezza L, istante l = m R (passo R, di solito L/2) e DFT a N >= L punti. Il modulo (o i dB) di X[k, l] come immagine tempo-frequenza è lo spettrogramma. La finestra impone un compromesso: lunga = ottima risoluzione in frequenza (Delta w circa 8pi/L per Hann) ma transizioni temporali sfocate su circa L/2 campioni; corta = buona localizzazione nel tempo ma righe vicine fuse. Si provano più lunghezze.Trasformata di Fourier a tempo breve e spettrogramma →).
- Errore tipico. Confondere lo zero-padding con un aumento di risoluzione, o leggere l'ampiezza di un tono fuori bin senza correzione.