# Perché il tuo spettro FFT mente: spectral leakage e finestre

> Spectral leakage nella FFT: una sinusoide fuori bin falsa l'ampiezza e maschera i toni deboli vicini. Finestre Hann, Blackman, flat-top ed ENBW per il rumore.

Pubblicato: 2026-06-24
Categoria: software
Tag: fft, dsp, spectral-leakage, windowing, hann, enbw, segnali

Pagina: <https://www.stline.it/blog/fft-leakage-finestre/>

---

Capita spesso, quando arriva una segnalazione di "misura sbagliata" su un nostro tool di analisi spettrale: il cliente guarda lo spettro di una sinusoide pulita e si lamenta che il picco non sta dove dovrebbe, o che l'ampiezza letta è più bassa del valore noto del generatore. Quasi sempre non c'è nessun bug. C'è una FFT letta senza capire cosa la FFT presuppone — e la causa ha un nome preciso: **spectral leakage**.

## La FFT crede che il tuo segnale sia periodico

Una FFT discreta non vede una sinusoide infinita: vede il blocco finito di campioni che le passi, e *assume* che quel blocco si ripeta identico all'infinito. Se la frequenza del segnale cade esattamente su un bin — cioè se nel blocco entra un numero intero di periodi — l'assunzione è vera e lo spettro è pulito: tutta l'energia finisce in un solo bin.

Nella realtà questo non succede quasi mai. La frequenza del segnale è scorrelata dalla durata del blocco, l'ultimo periodo viene troncato a metà, e nel punto di giunzione fra una ripetizione e la successiva nasce una discontinuità. Quella discontinuità non è gratis: la FFT la rappresenta spalmando energia su *tutti* i bin vicini. È il leakage. Il picco non è più una riga netta, ma una collina con code lunghe che decadono lentamente verso i lati.

## Cosa rompe davvero

Il leakage produce due errori che contano in una misura reale:

- **Ampiezza falsata.** L'energia del tono si distribuisce su più bin, quindi il bin di picco legge *meno* del valore vero. Nel caso peggiore — frequenza esattamente a metà fra due bin — l'errore di scallop loss arriva a circa 3,9 dB con la finestra rettangolare. Quasi un fattore due in tensione, letto come "errore dello strumento".
- **Toni deboli mascherati.** Le code di leakage di un tono forte sommergono i bin dove vivrebbe un tono debole vicino. È il problema classico quando si cerca una distorsione armonica o un'intermodulazione 60 dB sotto la portante: il segnale c'è, ma annega nelle code del tono principale.

## Le finestre: smussare la giunzione

Il rimedio è non passare alla FFT un blocco troncato di netto, ma moltiplicarlo prima per una **finestra** che va dolcemente a zero agli estremi. Sparita la discontinuità, spariscono le code lunghe del leakage. È un baratto, non un pasto gratis: addolcendo i bordi si allarga il lobo principale, quindi si perde risoluzione in frequenza in cambio di code laterali più basse.

Ogni finestra sta in un punto diverso di questo compromesso:

- **Hann** — il default ragionevole: code che decadono in fretta, lobo principale moderato. Va bene per la grande maggioranza dell'analisi a banda larga.
- **Hamming** — primo lobo laterale più basso di Hann, ma le code lontane decadono più lentamente. Utile quando il disturbo è vicino in frequenza.
- **Blackman** — code molto soppresse, lobo principale largo. Quando serve scavare un tono debole lontano da uno forte.
- **Flat-top** — lobo principale deliberatamente largo e piatto, così l'ampiezza letta sul picco è accurata anche se il tono cade fra due bin. È la finestra giusta quando il numero che ti serve è il *livello*, non la frequenza precisa: tipicamente in taratura.

La tassonomia di riferimento su tutto questo resta il lavoro di Harris del 1978 sulle finestre per l'analisi armonica: resta il riferimento da tenere a portata di mano quando si sceglie una finestra per un caso specifico.

## L'ENBW, il numero che si dimentica sempre

Quando si passa da misure di tono a misure di **rumore** — densità spettrale di potenza, livelli di fondo — la finestra introduce un fattore che va dichiarato esplicitamente: la **ENBW** (Equivalent Noise Bandwidth), la larghezza di banda equivalente di rumore. Una finestra non misura il rumore in un bin largo `Δf`, ma in una banda effettiva `ENBW · Δf`. Dimenticare questo fattore vuol dire sbagliare il livello di rumore di una quantità che dipende dalla finestra: per Hann l'ENBW vale circa 1,5 bin. Chi confronta misure di rumore fatte con finestre diverse senza normalizzare per l'ENBW sta confrontando numeri non confrontabili.

## Prima di chiamarlo bug

Uno spettro FFT è il risultato di un’assunzione di periodicità e di una finestra, e l’errore che introduce è prevedibile una volta note entrambe. Davanti a un’ampiezza sbagliata conviene quindi verificare due cose nell’ordine: quale finestra è applicata, e se il tono cade su un bin o fra due. Per toccare con mano leakage, scelta della finestra ed ENBW abbiamo messo online un [FFT / Window Explorer](/tools/fft-window-explorer/) interattivo; il modello fisico e le formule sono nella [wiki dedicata](/wiki/fft-window-explorer/).

Stai progettando una pipeline di analisi spettrale o tarando una catena di misura e vuoi che i numeri tornino? [Parliamone](/contatti/).
