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 interattivo; il modello fisico e le formule sono nella wiki dedicata.
Stai progettando una pipeline di analisi spettrale o tarando una catena di misura e vuoi che i numeri tornino? Parliamone.