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