FFT e finestre di analisi
Spectral leakage, finestre (Hann, Hamming, Blackman, Blackman-Harris, flat-top) e le loro metriche — ENBW, scalloping, lobo principale e side-lobe — come scegliere la finestra giusta per analizzare uno spettro.
La FFT trasforma un blocco di campioni in uno spettro, ma il risultato dipende tanto dal segnale quanto dalla finestra con cui lo si analizza. Capire lo spectral leakage e le finestre è la differenza tra leggere uno spettro e fraintenderlo. Questo strumento mostra l’effetto delle finestre su un segnale di test; questa pagina spiega cosa succede e perché.
La FFT e la risoluzione
La FFT calcola la Trasformata di Fourier Discreta di N campioni e restituisce N/2+1 bin di frequenza equispaziati tra 0 e Fs/2 (Nyquist). La spaziatura dei bin — la risoluzione in frequenza — dipende solo da Fs e N:
A parità di Fs, più campioni (N grande) danno bin più fitti e quindi la capacità di distinguere righe più vicine. Ma N campioni a frequenza Fs sono N/Fs secondi di osservazione: la risoluzione si compra con il tempo di misura. Non c’è scorciatoia — è una conseguenza diretta della trasformata, non un limite dell’algoritmo.
Spectral leakage
La FFT tratta gli N campioni come un periodo che si ripete all’infinito. Se una sinusoide completa un numero intero di cicli nella finestra, la ripetizione è continua e l’energia cade in un solo bin. Ma se non lo fa — il caso normale — agli estremi del blocco nasce una discontinuità, e questa discontinuità ha contenuto spettrale a tutte le frequenze: l’energia della riga si disperde sui bin vicini. È lo spectral leakage.
La conseguenza pratica è seria: una riga forte produce code che possono seppellire una riga debole vicina, anche quando la loro distanza in frequenza sarebbe ben oltre la risoluzione Δf. Il leakage non è rumore — è il segnale stesso, mal localizzato.
Le finestre e i loro trade-off
Una finestra di analisi moltiplica gli N campioni per una funzione che va dolcemente a zero agli estremi, cancellando la discontinuità ai bordi. Il prezzo da pagare è un compromesso inevitabile, descritto in modo completo nel lavoro di riferimento del campo — F. J. Harris, “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform” (Proc. IEEE, 1978) — che tabula e confronta decine di finestre.
Lo spettro di una finestra ha due parti: un lobo principale (la riga, allargata) e i side-lobe (le code residue). Le due si scambiano:
- una finestra con lobo stretto risolve righe vicine ma ha side-lobe alti → più leakage;
- una finestra con side-lobe bassi sopprime il leakage ma ha lobo largo → peggiore risoluzione.
Le finestre classiche sono somme di coseni; ogni termine aggiuntivo abbassa i side-lobe a spese del lobo:
- Rettangolare (nessuna finestra) — lobo più stretto in assoluto, ma side-lobe a soli −13 dB.
- Hann / Hamming — un termine di coseno: side-lobe a −31 / −43 dB, lobo moderato. Il compromesso generale.
- Blackman / Blackman-Harris — due/tre termini: side-lobe fino a −92 dB, lobo decisamente più largo.
- Flat-top — cinque coefficienti (quattro termini di coseno), ottimizzati per l’ampiezza: lobo larghissimo, ma scalloping quasi nullo. Attenzione a una sua proprietà poco nota: questa finestra non è non negativa. Con i coefficienti SRS/Matlab usati qui il minimo vale −0,0706 e il primo campione è −4,2·10⁻⁴, non zero — quindi la descrizione generale «va dolcemente a zero agli estremi», vera per tutte le altre, per la flat-top va corretta in «attraversa lo zero e passa in negativo».
ENBW e scalloping
Due metriche riassumono il comportamento di una finestra al di là della forma del lobo.
La Equivalent Noise Bandwidth (ENBW) è la larghezza, in bin, del filtro rettangolare ideale che lascia passare la stessa potenza di rumore della finestra. Misura quanto rumore raccoglie ogni bin: ENBW alta = peggior rapporto segnale/rumore per una riga. Dipende dai soli coefficienti:
La rettangolare ha ENBW = 1 bin (il minimo possibile); le finestre più “morbide” salgono (Hann ≈ 1.5, flat-top ≈ 3.8). È il prezzo in banda equivalente di rumore della soppressione del leakage.
Lo scalloping loss è invece l’errore di ampiezza nel caso peggiore: una riga che cade esattamente a metà strada tra due bin viene letta attenuata (per la rettangolare fino a −3.9 dB). La flat-top è progettata proprio per annullarlo (scalloping ≈ 0 dB): per questo è la finestra delle misure di ampiezza calibrate, anche se il suo lobo largo la rende inadatta a risolvere righe vicine.
Le finestre a confronto
| Finestra | ENBW (bin) | Scalloping | 1° side-lobe | Lobo −3 dB | Lobo −6 dB |
|---|---|---|---|---|---|
| Rettangolare | 1,000 | −3,92 dB | −13,3 dB | 0,88 bin | 1,20 bin |
| Hamming | 1,363 | −1,75 dB | −43,6 dB | 1,30 bin | 1,81 bin |
| Hann | 1,500 | −1,42 dB | −31,5 dB | 1,44 bin | 2,00 bin |
| Blackman | 1,727 | −1,10 dB | −58,1 dB | 1,64 bin | 2,30 bin |
| Blackman-Harris | 2,004 | −0,83 dB | −92,0 dB | 1,90 bin | 2,66 bin |
| Flat-top | 3,770 | −0,01 dB | −94,2 dB | 3,72 bin | 4,58 bin |
Le colonne del lobo sono la larghezza totale ai livelli −3 e −6 dB, in bin: è la misura diretta della risoluzione, e va dall’0,88 bin della rettangolare ai 3,72 della flat-top. Il resto della tabella si legge come il compromesso annunciato — side-lobe più bassi pagati con ENBW e lobo crescenti — con un’eccezione che salta agli occhi: la Hamming ha side-lobe più bassi e ENBW più basso e lobo più stretto della Hann. La domina su tutte le metriche in tabella. Allora perché la Hann è il default di mezzo mondo?
Il paradosso Hann/Hamming: conta il roll-off
Perché il primo side-lobe non è la storia completa. Quello che conta, quando bisogna vedere una riga debole, è il livello del leakage alla distanza a cui sta la riga, e le due finestre si comportano in modo opposto man mano che ci si allontana:
| Finestra | 1° side-lobe | Oltre 10 bin | Oltre 50 bin | Oltre 200 bin | Pendenza |
|---|---|---|---|---|---|
| Rettangolare | −13,3 dB | −30,4 dB | −44,0 dB | −55,4 dB | 5,9 dB/ott. |
| Hamming | −43,6 dB | −47,4 dB | −60,6 dB | −72,0 dB | 5,9 dB/ott. |
| Hann | −31,5 dB | −71,1 dB | −112,1 dB | −148,2 dB | 17,8 dB/ott. |
| Blackman | −58,1 dB | −78,9 dB | −119,5 dB | −155,5 dB | 17,8 dB/ott. |
| Blackman-Harris | −92,0 dB | −99,2 dB | −121,2 dB | −131,0 dB | 0,9 dB/ott. |
| Flat-top | −94,2 dB | −93,0 dB | −98,6 dB | −109,6 dB | 4,6 dB/ott. |
La Hann parte peggio (−31,5 dB) ma scende di 17,8 dB per ottava; la Hamming parte meglio (−43,6) e scende di soli 5,9. Il sorpasso avviene molto presto: già a 10 bin di distanza la Hann è 24 dB meglio (−71,1 contro −47,4), e a 200 bin il divario è di 76 dB. La ragione è nei coefficienti: la Hann va esattamente a zero agli estremi con derivata nulla, la Hamming si ferma a 0,08 e quel gradino residuo genera una coda che decade come 1/f.
Quindi il criterio corretto non è «quale ha il primo side-lobe più basso» ma «quanto lontana sta la riga che voglio vedere»: la Hamming vince solo nell’intorno immediato, la Hann in tutto il resto dello spettro. La Blackman-Harris è il terzo caso: primo side-lobe eccellente (−92 dB) ma pendenza quasi nulla (0,9 dB/ottava), perché i suoi quattro coefficienti sono ottimizzati per minimizzare il picco dei side-lobe, non per farli decadere. È la scelta giusta quando serve un pavimento uniforme, non quando serve profondità lontano dalla riga.
La flat-top resta il caso estremo per l’ampiezza: scalloping misurato −0,01 dB contro i −3,92 della rettangolare, al prezzo di un lobo di 3,72 bin che non risolve nulla di vicino.
Periodic o symmetric: quale convenzione
C’è un dettaglio da cui nascono differenze fra strumenti diversi. Una finestra di N punti si può costruire con denominatore N o N − 1:
- periodic (denominatore N) — la finestra è un periodo esatto di una funzione periodica:
w[0] = 0maw[N−1] ≠ 0. È la convenzione giusta per l’analisi FFT, perché la DFT assume proprio che il blocco si ripeta; - symmetric (denominatore N − 1) — la finestra è simmetrica attorno al centro:
w[0] = w[N−1] = 0. È la convenzione giusta per il progetto di filtri FIR, dove la simmetria garantisce la fase lineare.
Su una Hann a N = 16 la differenza è visibile a occhio: l’ultimo campione vale 0,0381 nella periodica e 0 nella simmetrica. Questo strumento usa la periodic, coerente col suo scopo. Quanto pesa la scelta sulle metriche:
| N | ENBW periodic | ENBW symmetric | Differenza |
|---|---|---|---|
| 8 | 1,50000 | 1,71429 | +14,286 % |
| 16 | 1,50000 | 1,60000 | +6,667 % |
| 64 | 1,50000 | 1,52381 | +1,587 % |
| 256 | 1,50000 | 1,50588 | +0,392 % |
| 1024 | 1,50000 | 1,50147 | +0,098 % |
| 4096 | 1,50000 | 1,50037 | +0,024 % |
A N = 1024 la differenza sull’ENBW è un decimo di punto percentuale: irrilevante. A N = 8 è il 14 %, cioè decisiva. La regola pratica: per blocchi FFT di dimensione normale le due convenzioni sono interscambiabili, per finestre corte (banchi di filtri, analisi a blocchi piccoli, tabelle precalcolate su firmware) no — ed è il caso in cui i risultati di due strumenti diversi non tornano e si perde un pomeriggio a cercare l’errore altrove.
Quando usare quale finestra
- Segnale sincrono / transitorio (numero intero di cicli, o impulso che decade nella finestra): rettangolare — niente leakage da correggere, massima risoluzione.
- Analisi generica: Hann o Hamming — il default ragionevole, leakage contenuto senza rinunciare troppo alla risoluzione.
- Riga debole accanto a una forte (alto range dinamico): Blackman-Harris — side-lobe bassissimi per non far sparire la riga debole sotto le code di quella forte.
- Misura precisa dell’ampiezza di una riga: flat-top — scalloping nullo, l’ampiezza letta è corretta indipendentemente da dove cade la riga rispetto ai bin.
Limiti
- FFT radix-2: N deve essere potenza di 2.
- Segnale di test sintetico (sinusoidi + rumore gaussiano seedato), non acquisizione reale.
- Spettro single-sided calibrato in ampiezza di picco (correzione di coherent gain); non è una stima di densità spettrale di potenza.
- Strumento dimostrativo, non un analizzatore di spettro di misura.
Riferimenti
- F. J. Harris, “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform”, Proceedings of the IEEE 66(1), 1978 — il riferimento classico su finestre, ENBW, scalloping e side-lobe, con le tabelle comparative usate ancora oggi.
- Strumento correlato — il FFT / Window Explorer mette in pratica questa pagina: componi un segnale, scegli la finestra e leggi spettro e metriche.
Un progetto simile?
Acustica, embedded, strumenti di calcolo: se hai un caso d’uso vicino, parliamone.