Calcolo veloce della DFT: la Fast Fourier Transform (FFT) Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
2 Algoritmi di FFT basati sulla decimazione nel tempo (Decimation in the Time domain: FFT-DT) Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
3 Algoritmi di FFT-DT periodo N/2 in k Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
4 Algoritmi di FFT-DT Il 1°passo di decimazione ha portato alla seguente complessita’: calcolo X(k) = cal. G(k) & cal. H(k) & cal. combinazione G(k) con H(k) calcolo combinazione = 1 * complessa & 1 + complessa per ogni k (N * e N + in totale) N=8 Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
5 Algoritmi di FFT-DT 2°passo 4 DFT da N/4 punti e varie operazioni di combinazione Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
6 Il 2°passo di decimazione ha portato alla seguente complessita’: cal. X(k) = [cal. G 1 (k) & cal. G 2 (k) & cal. combinazione G 1 (k) & cal. G 2 (k)]& [cal. H 1 (k) & cal. H 2 (k) & cal. combinazione H 1 (k) & cal. H 2 (k)]& [cal. combinazione G(k) con H(k)] cal. combinazione G i (k) o H i (k) = N/2*compl. & N/2 + compl. totali N=8 Algoritmi di FFT-DT Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
7 Nel generico passo i-mo di decimazione, la struttura del calcolo di X(k) e’ la seguente: cal. X(k) = [cal. di varie DFT su “meno punti”]& [cal. combinazione delle DFT generate nel passo i-mo]& [cal. combinazione delle DFT generate nel passo i-mo]& [cal. combinazione delle DFT generate nel passo (i-1)-mo]& [cal. combinazione delle DFT generate nel passo (i-1)-mo]& …&[cal. combinazione G(k) con H(k)] …&[cal. combinazione G(k) con H(k)] Quando si ferma l’algoritmo? Se “meno punti” = 2 (infatti la DFT su 2 punti e’ “pura combinazione”) N=8 Algoritmi di FFT-DT Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
8 Algoritmi di FFT-DT Esempio
Marina Ruggieri & Tommaso Rossi, Modulo di Elaborazione Numerica dei Segnali, a.a. 2008/ Algoritmi di FFT-DT schema del 1°+2° passo dell’algoritmo
10 Algoritmi di FFT-DT Inserendo lo schema nell’architettura della slide precedente si ottiene: Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010 Nota bene: W N ^(N/2=4)=-1, dove N=8
11 Algoritmi di FFT-DT stadio 1 stadio 2 stadio 3= log 2 8=log 2 N Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
12 Algoritmi di FFT-DT In generale Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
13 Algoritmi di FFT-DT - BUTTERFLYMODIFICATA (richiede solo 1 * complessa) (cioe’ N/2 butterly per stadio e =log 2 N stadi) Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
14 Algoritmi di FFT-DT Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
15 Algoritmi di FFT-DT Per effettuare il calcolo sul posto: Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010 Il calcolo sul posto ha il vantaggio che ogni nuova sequenza calcolata in uscita da un certo stadio viene memorizzata nelle stesse locazioni di memoria della sequenza di ingresso. Se (n2n1n0) e’ la rappresentazione binaria dell’indice della sequenza, il campione x(n2n1n0) risulta memorizzato nella posizione X0(no,n1,n2), per determinare la posizione di x(n2n1no) dobbiamo invertire l’ordine dei bit dell’indice n
16 Algoritmi di FFT-DT Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010
17 Algoritmi di FFT-DT Cosimo Stallo & Paolo Emiliozzi Modulo di Elaborazione Numerica dei Segnali, a.a. 2009/2010