FFT Cooley-Tukey per N 2
Transcript
FFT Cooley-Tukey per N 2
FFT Cooley-Tukey per N Algoritmo a divisione in frequenza (DIF) – Calcolo X k per k pari e dispari farfalle + 2 DFT N 2 punti – DFT su N punti – Scrambling sull’uscita Algoritmo a divisione nel tempo (DIT) – Divido sommatoria su indici pari e dispari 2 DFT N 2 punti + farfalle – DFT su N punti – Scrambling sull’uscita Entrambi – Costo computazionale: 5N log2 N op. reali lavoro “sul posto” – log2 N stadi di “farfalle” – Alternanza “farfalle” e “twiddle factor” 1 2ν Varianti FFT : Split-radix Parte come una CT-FFT a divisione in frequenza Invece di applicare i twiddle factor all’uscita dei rami “negativi” delle farfalle, applica delle farfalle con j Risultato 1 DFT da N 2 + 2 DFT da N 4 + stesso numero di twiddle factor di – DFT su N punti CT conviene sostituire 1 DFT da N 2 con 2 DFT da – Il costo della FFT è più che lineare N 4 Algoritmo con minimo numero di prodotti complessi Estendibile a dati reali Struttura più complessa 2 Varianti FFT : Split-radix (2) Derivazione DFT per 2k 1 N 2 1 1n u n WN4 3n 1n n 0 N 2 1 u n WN4 ∑ 3 n 0 ∑ 3 X 4 1 X 4 N 2 N 2 1 xn 2 ) e k dispari Divido tra k pari (k xn n 0 un ; u n WN2k ∑ 1 X 2k Varianti FFT : Split-radix (3) 1 Derivazione: il caso 4 N 2 1 u n WN4n WNn ∑ 1 X 4 n 0 N 2 1 u n WNn 4WNn ∑ n 0 N 4 1 n 0 u m WNm 4WNm ∑ un ∑ N 2 1 WNn 4WNn m N 4 un N 4 WNn WNn ju n 4 n 0 ∑ xj n DFTN 4 x j ; 4 4 N 4 WNn 4WNmWNN m 0 n 0 N 4 1 um un ∑ WNn 4WNn ∑ N 4 1 N 4 1 Varianti FFT : Split-radix (4) 3 Derivazione: il caso 4 N 2 1 u n WN4n WN3n ∑ 3 X 4 n 0 N 2 1 u n WNn 4WN3n ∑ n 0 N 4 1 n 0 u m WNm 4WN3m ∑ un ∑ N 2 1 WNn 4WN3n m N 4 4 n 0 N 4 WN3n WNn ju n un ∑ x n j DFTN 4 x j ; 5 4 N 4 WNn 4WN3mWN3N m 0 n 0 N 4 1 um un ∑ WNn 4WN3n ∑ N 4 1 N 4 1 Varianti FFT : Split-radix (5) Struttura x+ x(0) x(1) x(2) x(3) X(2k) DFT 8 x(4) x(5) x(6) x(7) x(8) −1 1:16 x(9) −1 2:16 x(10) −1 3:16 x(11) −1 4:16 x(12) −1 x(13) −1 x(14) −1 x(15) −1 DFT 4 X(4k+1) DFT 4 X(4k+3) 3:16 j −1 6:16 j −1 9:16 j −1 12:16 j −1 u 6 Varianti FFT : Split-radix (6) Confronto con CT x+ x(0) x(1) x(2) x(3) DFT 8 x(4) X(2k) x(5) x(6) x(7) x(8) x(9) x(10) x(11) x(12) x(13) x(14) x(15) −1 0:16 −1 1:16 −1 2:16 −1 3:16 −1 4:16 −1 0:8 −1 5:16 −1 1:8 −1 6:16 −1 2:8 −1 7:16 −1 3:8 7 DFT 4 X(4k+1) DFT 4 X(4k+3) Varianti FFT : Split-radix (7) Costo Split-radix N 2 N 4 N 2 1 2 !!! Farfalle Twiddle DFT su N 2 DFT su N 4 Cooley-Tukey N 2 N 4 N 2 N 4 1 2 Numero prodotti in una Split-radix 2 3 numero prodotti in una CT Numero somme in una Split-radix numero somme in una CT Equazione ricorsiva C N C N 2 2C N 4 3N N twiddle 2ν , si definisca C 2ν e si passi alle 8 ν Esercizio: trovare C N [sugg.: sia N trasformate zeta] farfalle Varianti FFT : Split-radix (8) Segnali reali Se x n FFT per segnali reali – x n xn xn N 2 xn xn N 2 – un – Le farfalle costano la metà 4 4k 1 4 1 I valori con indice 4k 3 sono i coniugati dei valori con indice 4k posso evitare di calcolarli 9 1 Simmetria Hermitiana Periodicità N 2ν 4 sommo e tolgo 4 N 4 k 1 N 4k 1 4N 4 k 1 4 N 4 1 4k 4 3 X X X X X 1 X 4k 2ν Poiché N Varianti FFT : Split-radix (9) Segnali reali: struttura Somme reali x(0) x(1) x(2) x(3) DFT 8 Reale x(4) X(2k) x(5) Costo nullo (riorganizzazione) x(6) x(7) x(8) −1 1:16 x(9) −1 2:16 x(10) −1 3:16 x(11) −1 x(12) −1 j x(13) −1 j x(14) −1 j x(15) −1 j DFT 4 X(4k+1) Complessa 4:16 Coniugati 3:16 −1 6:16 −1 9:16 −1 12:16 −1 10 DFT 4 X(4k+3) Varianti FFT : Split-radix (10) Segnali reali: costo Segnali reali N 2 N 4 1 (reale) 1 (complessa) 1/2 costo SR per segnali complessi 11 Costo SR per segnali reali Somme da farfalle Twiddle DFT su N 2 DFT su N 4 Segnali complessi N N 2 1 (complessa) 2 (complesse) Altre varianti CT per N AB N 1 ∑ x n WNnk N 0 nk 1 X k n 0 Ponendo b 0 Twiddle A DFT su B punti (una per ogni a) B DFT su A punti (una per ogni β ) 12 B B a WBbβ ∑ x Ab WNaβ a 0 B 1 ∑ β X Bα WAaα si ottiene A 1 0 0 b β 1 1 A A 0 0 a α Ab a Bα β n k 1 1 Altre varianti (2) CT per N AB 2ν (a volte ritornano) 2, A CT a decimazione in frequenza: B N 2 2, B A CT a decimazione nel tempo: N 2 13 Altre varianti (3) Prime-factor AB con A e B mutualmente primi (ossia quando MCD A B Si applica quando N Lo stadio di twiddle factor viene sostituito da una permutazione dei dati No prodotti intermedi! Senza prodotti aggiuntivi la DFT su N pn11 – N pn11 DFT su pn11 punti – N pn22 DFT su pn22 punti, – ... – N pnKK DFT su pnKK punti. Concludo con CT 14 pnKK viene scomposta in Attenzione: 9 e 8 sono mutualmente primi, pur non essendo primi 1) Altre varianti (4) FFT di Rader p primo Si applica quando N Scompone il problema in due parti – La “continua” X 0 ∑np 01 x n viene calcolata direttamente – Il calcolo degli altri valori p 1 1 k ∑ x n Wpkn p X k n 0 viene trasformato (tramite permutazione) nel calcolo di una p 1 convoluzione su La convoluzione può essere calcolata come prodotto di DFT su p (p 1 è certamente pari e quindi non primo) Procedura alternativa basata sul resto cinese 15 1 punti Altre varianti (5) Winograd Procedimento – Scompone DFT con Prime-Factor – Riduce DFT a convoluzioni circolari – Calcola convoluzioni con resto cinese Complessità lineare nel numero di prodotti (non contando prodotti per piccoli interi) Molto complessa come struttura Può fare un numero eccessivo di somme Implementata nella libreria FFTW (con funzione di pre-calcolo) 16 FFT inversa Algoritmo per la FFT inversa di X – – – – Scambia parte reale e immaginaria di X Calcola la FFT diretta del risultato Scambia parte reale e immaginaria del risultato Scala per 1 N Costo computazionale uguale alla FFT diretta Permette di “riciclare” qualsiasi algoritmo per la FFT diretta Dimostrazione: spunto di riflessione 17 FFT per segnali reali Siano x e y due segnali reali lunghi N xn jy n – Crea v n – Calcola la FFT di v – Estrai X e Y da V Spunti di riflessione – Come calcolo X e Y da V ? – Applica a CT-DIT 18