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