7.5 Fattori primi FFT Decomposizione di Good Tutti gli algoritmi FFT

Transcript

7.5 Fattori primi FFT Decomposizione di Good Tutti gli algoritmi FFT
7.5 Fattori primi FFT
Decomposizione di Good
Tutti gli algoritmi FFT nel precedente paragrafo risultano dalla
formulazione della FFT di Cooley-Tukey e sono noti come CommonFactor -Algorithms (CFA) algoritmi a fattore comune, perché in molti
casi i valori della radice per due o più stadi hanno un fattore comune non
unitario ( cioè, 2 o 4).
Un'altra importante classe degli algoritmi FFT sono
Prime- Factor Algorithms (PFA) gli algoritmi a fattore primo.
M. Usai
Circuiti digitali 7_6
1
Questi algoritmi sono ottenuti trasformando la DFT monodimensionale
in una DFT multidimensionale usando indici di mappatura basati sul
Teorema CRT ( Chinese Remainder Theorem).
Esso è applicabile solo se la lunghezza N della DFT può essere
decomposta in fattori che siano reciprocamente primi.
Poniamo che questi P fattori di N siano N1, N2, …,Np cioè dove Ni e Nj
mutuamente primi implica che:
Ni/a=b
e
Nj/a=c
⇒
a=1
per tutti i valori di i≠j e i valori interi positivi di a, b, c.
Good [81]ha introdotto una mappatura univoca degli indici n e k in Ptuples (n1, n2, …,np) e (k1, k2, …kp) usando il teorema CRT (Chinese
remainder Theorem) per ottenere la seguente decomposizione della DFT.
M. Usai
Circuiti digitali 7_6
2
N1 −1
~
X ( k1 ,..., k P ) = ∑ ~
x ( n1 ,..., nP )W1n1k1 ...WPnP k P
n1 =0
(7.5.1)
dove
Wi= e-j2π/Ni
Se questa espressione è uguale alla definizione originale di in (7.1.4) X~ (k )
allora:
W nk = W1n1k1W2n2k2 ...WPnP k P
nk
o
M. Usai
N
= n1k1M 1 + ⋅ ⋅ ⋅ + nP k P M P
Circuiti digitali 7_6
(7.5.2)
N
(7.5.3)
3
dove < >N denota operazione modulo N e
P
Mi =
∏
j ≠i
i =1
Nj =
N
.
Ni
(7.5.4)
Le operazioni modulo N in (7.5.3.) sono richieste perché WN =1.
Una breve introduzione al residuo aritmetico (modulo N) e del Teorema
CRT (Chinese Remainder Theorem) è data in nell’appendice di questo
capitolo.
Si farà riferimento qui, invece, a qualche derivazione meno formale delle
relazioni necessarie.
Per derivare la mappatura di input da n a (n1, n2, …,np) , si assume la
semplice mappatura di output
ki=<k>Ni.
(7.5.5)
Cioè ki è il residuo di k modulo Ni.
M. Usai
Circuiti digitali 7_6
4
Poiché Ni≥2 per tutti gli i, si ha dalla (7.5.5) che se k= 1, allora ki=1 per tutti
gli i.
Sostituendo questi valori unitari dalla (7.5.3) si ottiene la mappatura di input:
n=<n1M1+n2M2+…+npMp>N.
(7.5.6)
L'espressione della mappatura di output in (7.5.5) può essere invertita come
segue :
Si pone (n1, n2, …,np) corrispondente a n=1, cioè:
Quindi dalla (7.5.3),
nk
N
= n1k1M 1 + ⋅ ⋅ ⋅ + nP k P M P
1 =< n% 1M1 + n% 2 M 2 + …+ n% p M p > N
N
(7.5.7)
.
M. Usai
Circuiti digitali 7_6
5
Per trovare i valori di ni, poniamo k= Mi.
Quindi dalla definizione della mappatura di output in (7.5.5),
j≠i
⎧0
k i =< M i > Nj = ⎨
j=i
⎩< M i > Nj
perché Mi è multiplo di Nj per j≠i.
Sostituendo questi valori per k e ki nella (7.5.7) si trova che:
n~i = M i−1
Ni
,
(7.5.9)
dalle quali si capisce che
n~i M i
M. Usai
Ni
= 1.
(7.5.10)
Circuiti digitali 7_6
6
~
Non è ovvio che questa definizione di ni comporti che la (7.5.8) sia soddisfatta,
ma infatti ciò è dovuto alle proprietà della CRT.
Quindi per la (7.5.7) si ha l'inversa della mappatura di output:
k = k1 M 1−1
N1
M 1 + ⋅ ⋅ ⋅ + k P M P−1
NP
MP
.
(7.5.11)
N
Date le mappe di input e output per la decomposizione multidimensionale in
(7.5.1), la valutazione della DFT può procedere sommando per primo rispetto a
n1 e poi rispetto a n2 e così sino a np.
M. Usai
Circuiti digitali 7_6
7
Cioè si calcola la DFT a N1 punti:
~
b (k1, n2 ,...., n p ) =
N 1 −1
∑
~
x ((n1, n2 ,...., n p )W1n1k1
n1 = 0
per ciascuna delle M1(P-1) -tuples (n2,…,np).
Successivamente si calcola la DFT a N2 punti :
c~ (k1 , k 2 , n3 ,...., n p ) =
N 2 −1
~
n2 k 2
b
(
k
,
n
,
....,
n
)
W
∑ 1 2 p 2
n2 =0
Per ciascuna delle M2(P-1) -tuples (k1,n3,…,np).
Continuando in questo modo, si produce finalmente la DFT desiderata:
~
~
X (k ) = X (k1 , k 2 ,...k p ).
Si noti che l'importante proprietà degli algoritmi a fattori primi è che i fattori
di rotazione non sono richiesti tra i successivi stadi della FFT e ci sono
algoritmi a fattori comuni.
M. Usai
Circuiti digitali 7_6
8
Convoluzione circolare
Per vedere come una DFT di lunghezza dispari viene convertita in una
convoluzione circolare, si consideri la DFT a 5 punti scritta in forma
matriciale come segue:
~
⎡ X (0) ⎤ ⎡1
⎢~ ⎥ ⎢
⎢ X (1) ⎥ ⎢1
⎢ X~ ( 2)⎥ = ⎢1
⎢~ ⎥ ⎢
⎢ X (3) ⎥ ⎢1
⎢~ ⎥ ⎢
⎣⎢ X ( 4)⎦⎥ ⎢⎣1
1
1
1
W1 W 2 W 3
W 2 W 4 W1
W 3 W1 W 4
W 4 W3 W 2
1 ⎤ ~
⎡ x(o)⎤
⎥
W 4 ⎥ ⎢~
x(1)⎥
⎢
⎥
3⎥ ~
W ⎢ x(2)⎥ (7.5.12
⎥ ⎢
⎥
2⎥ ~
x
(3)
W ⎢
⎥
⎥
~
1 ⎢
⎣
W ⎥⎦ x(4)⎥⎦
Si noti che gli esponenti sono stati resi a modulo-5.
M. Usai
Circuiti digitali 7_6
9
~
~
Il primo passo è di separare il calcolo della X (0) dagli altri X (k ) per k ≠ 0 e
poi separare il contributo di ~
x (0) dagli altri per n≠0 cioè:
N −1
~
~
X ( 0) = ∑ ~
x (n),
X (k ) = ~
x (0) + X (k ),
n=0
k = 1,..., N - 1,
dove
~
X (k ) =
(7.5.13)
N −1
∑ ~x (n)W kn .
(7.5.14)
n =1
~
Sono le equazioni per la X (k ) in (7.5.14) che possono essere espresse come
convoluzione circolare come segue:
~
⎡ X (1) ⎤ ⎡
⎢~ ⎥ ⎢
⎢ X ( 2) ⎥ = ⎢
⎢ X~ ( 4)⎥ ⎢
⎢~ ⎥ ⎢
⎢⎣ X (3) ⎥⎦ ⎣⎢
M. Usai
W1 W 2 W 4 W 3 ⎤
⎥
2
4
3
1
W W W W ⎥
⎥
W 4 W 3 W1 W 2 ⎥
W 3 W1 W 2 W 4 ⎥⎦
x(1)⎤
⎡~
⎢~
x(2)⎥
⎢
⎥
~
⎢ x(4)⎥
⎢~
⎥
x
(3)
⎣
⎦
Circuiti digitali 7_6
(7.5.15)
10
Questa è una correlazione circolare o convoluzione "backwards" della
sequenza:
{ ~x (1), ~x (2), ~x (4), ~x (3) }
con la sequenza:
{W 1,W 2 ,W 4 ,W 3 }
x(1) e scambiando gli elementi rimanenti del vettore, si produce la
Fissando ~
convoluzione circolare convenzionale ("forward").
.
~
⎡ X (1) ⎤ ⎡
⎢~ ⎥ ⎢
⎢ X ( 2) ⎥ = ⎢
⎢ X~ (4)⎥ ⎢
⎢~ ⎥ ⎢
⎢⎣ X (3) ⎥⎦ ⎣⎢
M. Usai
W1 W 3 W 4 W 2 ⎤
⎥
2
1
3
4
W W W W ⎥
⎥
W 4 W 2 W1 W 3 ⎥
W 3 W 4 W 2 W1 ⎥⎦
x(1)⎤
⎡~
⎢~
x(2)⎥
⎥
⎢
~
⎢ x(4)⎥
⎥
⎢~
x
(3)
⎦
⎣
Circuiti digitali 7_6
(7.5.16)
11
La matrice degli esponenziali in (7.5.16) è nota come una matrice circolante
(circulant). La mappatura generale degli indici n e k per convertire la DFT
per N primo (dispari) in convoluzione circolare fu dato da Rader [82] come
riportato di seguito.
Poniamo
n = α −m ,
N
k = αl
N
,
(7.5.17)
dove n e k comprendono i gruppi moltiplicativi (multiplicative groups)
e m e l comprendono i gruppi adittivi (additive groups)
m,l = 1, 2,…, N-2
.
M. Usai
Circuiti digitali 7_6
12
L'intero α è una radice primitiva (N-1) di unità che soddisfa:
α N −1
αi
N
N
= 1,
≠1
per 0 < i < N - 1,
(7.5.18)
che generano il gruppo moltiplicativo (1, 2, …, N-1), poiché ciascun elemento
del gruppo può essere scritto come una potenza di α modulo-N.
Per esempio α uguale 2 oppure 3 per N=5.
Prendendo α=2, il gruppo additivo l=0, 1, 2, 3 mappa per n=1, 3, 4, 2.
L'espressione per in (7.5.14) può essere scritta come:
~
X (α l ) =
N −2
α (l − m)
−m
~
x
(
α
)
W
,
∑
l = 0,1,. . . , N - 2, (7.5.19)
m=0
che è la convoluzione circolare desiderata come nella (7.5.16).
M. Usai
Circuiti digitali 7_6
13