Trasformata di Fourier discreta (DFT) e FFT
In questa pagina 6
I segnali discreti periodici sono gli unici rappresentabili esattamente in un calcolatore, perché sono specificati da un numero finito di valori (quelli di un periodo). Anche le loro trasformate sono discrete e periodiche: la trasformata di Fourier discreta (DFT, discrete Fourier transform) è lo strumento con cui si studiano al calcolatore tutti i segnali, previa un'opportuna approssimazione.
Le quattro trasformate: il quadro
Lo studio di un segnale dipende da due caratteristiche: il dominio ( continuo oppure discreto) e la periodicità (aperiodico oppure periodico di periodo ). Ogni classe ha la propria trasformata, e la regola per trovare il dominio in frequenza è la stessa: se il tempo ha "quanto" e "periodo" (con le convenzioni per il continuo e per l'aperiodico), la frequenza ha quanto e periodo .
In forma unificata, tutte hanno lo stesso aspetto, e , dove è l'integrale di Haar: integrale su , integrale su un periodo, somma su tutti gli interi, somma su un periodo, a seconda della classe. Le regole di calcolo (linearità, traslazione, convoluzione prodotto, simmetria) e il teorema di Parseval valgono in forma unica; le formule per le singole classi sono casi particolari, e alcune regole (derivazione) esistono solo per i segnali continui.
Definizione della DFT
Sia periodico di periodo ( campioni per periodo). La frequenza fondamentale è e la trasformata vive su con periodo .
Definizione (DFT e DFT inversa). è periodica in di periodo (perché ) ed è specificata da valori, . I coefficienti di Fourier del segnale periodico sono .
Esempio. Con , e : e i coefficienti . Il primo è il valor medio .
La seconda formula discende da (ortogonalità su punti, somma geometrica di ragione ). Proprietà:
- Parseval. (per l'esempio sopra ).
- Segnale reale: , cioè (basta metà dei valori).
- Traslazione ciclica di campioni: moltiplica per ; convoluzione ciclica prodotto: (con le convenzioni del corso, e il fattore nella convoluzione). Verificato numericamente con vettori casuali.
- Forma matriciale. Con la matrice di elementi (matrice di Fourier), il vettore . Per le righe sono , , , . Poiché le righe sono ortogonali e la matrice è unitaria: la "forma unitaria" della DFT è , che conserva la norma (Basi ortonormali e Gram-SchmidtUna base ortonormale è fatta di vettori di norma 1 a due a due ortogonali: le coordinate si calcolano con prodotti scalari e le proiezioni con una formula diretta. Il procedimento di Gram-Schmidt trasforma una base qualsiasi in una base ortogonale (e poi ortonormale) dello stesso sottospazio.Basi ortonormali e Gram-Schmidt →, Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →).
Che cosa rappresenta la DFT
1. Segnale periodico di partenza discreto
È il caso diretto: i sono i coefficienti della serie di Fourier del segnale discreto, le uniche frequenze distinguibili.
2. Campionamento di un segnale continuo periodico
Se i campioni , , vengono da un segnale continuo periodico di periodo con coefficienti , i coefficienti del campionato sono la ripetizione periodica dei coefficienti con periodo (è il teorema di campionamento in forma di serie, Campionamento e ricostruzioneIl campionamento $s_c(nT)=s(nT)$ trasforma un segnale continuo in uno discreto e, in frequenza, ripete lo spettro con periodo $F_c=1/T$: $S_c(f)=\sum_kS(f-kF_c)$. Se le repliche si sovrappongono si ha aliasing e il segnale non è recuperabile. Un interpolatore $\mathbb Z(T)\to\mathbb R$ con risposta impulsiva $g$ produce $\tilde s(t)=\sum_nT g(t-nT)s(nT)$ e $\tilde S=G,S_c$. Teorema del campionamento: se $s$ ha banda $B$ e $F_c\ge2B$, l'interpolatore ideale $G=\operatorname{rect}(f/F_c)$ ricostruisce esattamente $s(t)=\sum s(nT)\operatorname{sinc}(F_c(t-nT))$. Se le ipotesi non valgono c'è un errore, in banda e fuori banda, riducibile con un prefiltro anti-aliasing.Campionamento e ricostruzione →). Se contiene solo armoniche non c'è sovrapposizione e per (esatto).
Esempio. L'onda quadra di periodo (vale per , coefficienti ) campionata con (valori ai tempi ; i campioni nei salti valgono ) dà , , , : coincidono con . Per esempio vale e non perché si sommano i contributi delle armoniche e , e , ...: (aliasing).
3. Campioni della trasformata di un segnale a durata limitata
Se è un segnale discreto aperiodico con estensione contenuta in campioni, lo si considera il periodo di un segnale periodico (le repliche non si sovrappongono nel tempo). Allora cioè la DFT è un campionamento della trasformata del segnale originario (quella di 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 →) nei punti .
Esempio. Il rect con campioni unitari () ha . Con la DFT dà solo valori (). Aggiungendo zeri fino a (zero-padding) si ottengono campioni della stessa in : la DFT lunga coincide con la formula (verificato), perché il segnale è sempre lo stesso con più zeri.
Lo zero-padding non aumenta la risoluzione (due componenti vicine restano indistinguibili se la durata del segnale è breve) ma infittisce i punti in cui si valuta la trasformata, e quindi rende il grafico più liscio. Per spaziare di più i campioni in frequenza ( più piccolo) si deve avere più grande, cioè estendere il segnale nel tempo.
4. Approssimazione della trasformata di un segnale continuo
Per un segnale continuo aperiodico a durata (circa) limitata in , lo si campiona con passo e si usa con (come nei laboratori, Esercizio - laboratorio 4, segnali continui aperiodici e risoluzione). Due scelte progettuali:
- il passo in frequenza (risoluzione) dipende solo dalla durata osservata ;
- l'estensione dell'asse delle frequenze, , dipende dal passo di campionamento: se il segnale non è a banda limitata entro quel valore c'è aliasing.
FFT: come si calcola
Il calcolo diretto di valori con moltiplicazioni ciascuno richiede circa operazioni. La FFT (fast Fourier transform) abbassa il costo a circa . L'idea (decimazione nel tempo, per potenza di ): si separano i campioni di indice pari e dispari,
dove e sono DFT di lunghezza , e si ripete la divisione fino a lunghezza . Per : circa moltiplicazioni complesse contro oltre . Il risultato è identico alla DFT diretta (verificato: l'implementazione ricorsiva coincide con np.fft.fft per ).
Convenzioni numeriche (NumPy / MATLAB)
np.fft.fft(x) (come fft di MATLAB) calcola senza fattori. Quindi con le convenzioni del corso:
| quantità | come si calcola |
|---|---|
| DFT del corso | T * np.fft.fft(x) |
| coefficienti di Fourier | np.fft.fft(x) / N |
| segnale dalla DFT | np.fft.ifft(S) / T (se S è la DFT del corso) |
| asse delle frequenze | k * F, , (oppure np.fft.fftfreq(N, T)) |
| asse centrato in | np.fft.fftshift(...) sia sui valori sia sull'asse, per pari |
I primi valori sono le frequenze positive , gli altri le frequenze negative (per la periodicità ). Se il segnale discreto non parte da ma è centrato in (segnale non causale), la fase della DFT contiene un termine lineare dovuto allo spostamento: si ottiene la fase attesa riordinando le due metà del vettore (equivale a ifftshift) prima della FFT. Il leakage compare se il segnale periodico non ha un numero intero di periodi nella finestra: la DFT di un coseno con non multiplo di non è una sola riga ma si distribuisce su molti .
Esercizi collegati
- Esercizio - DFT di un segnale discreto periodico
- Esercizio - laboratorio 3, DFT di segnali periodici
- Esercizio - laboratorio 4, coefficienti di Fourier con la FFT
- Esercizio - laboratorio 4, trasformata di segnali discreti con la FFT
Vedi anche la materia gemella: Trasformata di Fourier discreta (TFD)La TFD è la serie di Fourier dei segnali discreti periodici di periodo $N$: servono solo $N$ armoniche, $X(k)=\frac1N\sum_{n=0}^{N-1}x(n)e^{-j2\pi kn/N}$ e $x(n)=\sum_{k=0}^{N-1}X(k)e^{j2\pi kn/N}$. È un prodotto matrice-vettore in $\mathbb{C}^N$ (la matrice di Fourier); la convoluzione circolare diventa prodotto, $N X(k)Y(k)$. La FFT la calcola in $O(N\log N)$.Trasformata di Fourier discreta (TFD) → e 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 →.
Versione ripasso
- DFT: con periodo e , e . è periodica in di periodo e ha periodo di frequenza .
- Coefficienti di Fourier: . Esempio: con , e si ottiene e è il valor medio.
- Parseval: . Esempio: nel caso sopra entrambi valgono .
- Segnale reale: , quindi basta metà dei valori.
- Traslazione e convoluzione: traslazione ciclica di campioni moltiplicazione per ; convoluzione ciclica prodotto .
- Forma matriciale: , con . Poiché , la matrice è unitaria e la forma conserva la norma (Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →).
- Interpretazione 1, periodico discreto: i sono i coefficienti della serie del segnale discreto, cioè le uniche frequenze distinguibili.
- Interpretazione 2, campionamento di un continuo periodico: se il continuo ha coefficienti , allora . Se non ci sono armoniche con , per .
- Interpretazione 3, durata limitata: se il segnale discreto aperiodico sta in campioni, , campioni della trasformata di 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 →. Esempio: il rect di campioni con (zero-padding) dà campioni della stessa in .
- Zero-padding: infittisce i punti in frequenza ma non aumenta la risoluzione, che dipende dalla durata del segnale.
- Interpretazione 4, approssimazione di un continuo: con passo per un segnale in si usa , con . L'asse va da a : se il segnale non è a banda limitata entro quel valore c'è aliasing (Campionamento e ricostruzioneIl campionamento $s_c(nT)=s(nT)$ trasforma un segnale continuo in uno discreto e, in frequenza, ripete lo spettro con periodo $F_c=1/T$: $S_c(f)=\sum_kS(f-kF_c)$. Se le repliche si sovrappongono si ha aliasing e il segnale non è recuperabile. Un interpolatore $\mathbb Z(T)\to\mathbb R$ con risposta impulsiva $g$ produce $\tilde s(t)=\sum_nT g(t-nT)s(nT)$ e $\tilde S=G,S_c$. Teorema del campionamento: se $s$ ha banda $B$ e $F_c\ge2B$, l'interpolatore ideale $G=\operatorname{rect}(f/F_c)$ ricostruisce esattamente $s(t)=\sum s(nT)\operatorname{sinc}(F_c(t-nT))$. Se le ipotesi non valgono c'è un errore, in banda e fuori banda, riducibile con un prefiltro anti-aliasing.Campionamento e ricostruzione →).
- FFT: decimazione nel tempo con potenza di : e , con e DFT di lunghezza . Costo invece di . Esempio: per circa moltiplicazioni complesse contro oltre .
- NumPy/MATLAB:
np.fft.fftnon ha fattori. Quindi la DFT del corso èT * np.fft.fft(x), i coefficienti sononp.fft.fft(x) / N, il segnale si ricava connp.fft.ifft(S) / T. - Leakage: se la finestra non contiene un numero intero di periodi, la DFT di un coseno non è una sola riga ma si distribuisce su più .
Errori tipici:
- Confondere la DFT del corso (con ) con la
fftdi NumPy (senza fattori). - Dimenticare la normalizzazione nei coefficienti .
- Pensare che lo zero-padding migliori la risoluzione: migliora solo il campionamento in frequenza.
- Leggere le frequenze oltre come positive: per sono negative.
- Dimenticare che senza
fftshiftl'asse parte da e non da .
Esercizi su questo argomento
- Esercizio - DFT di un segnale discreto periodico
- Esercizio - filtraggio di un impulso rettangolare con convoluzione e trasformate in Python (laboratorio 5)
- Esercizio - filtri FIR e IIR e risposta in frequenza in Python (laboratorio 5)
- Esercizio - laboratorio 2, convoluzione numerica
- Esercizio - laboratorio 3, DFT di segnali periodici
- Esercizio - laboratorio 4, coefficienti di Fourier con la FFT
- Esercizio - laboratorio 4, segnali continui aperiodici e risoluzione
- Esercizio - laboratorio 4, trasformata di segnali discreti con la FFT
- Esercizio - processi gaussiani con correlazione modulata e filtro passa-basso (prova scritta del 17 settembre 2025)