Documente Academic
Documente Profesional
Documente Cultură
177
178
CAPITOLUL 7
179
180
WNnk = e
2
nk
N
=e
2
n
N /k
= W Nn
(7.5)
(7.1)
de la o descompunere similar.
Un caz important este acela n care N = R M , R numindu-se baz. De
n =0
unde WN = e
2
N
n = 0,1,..., N 1
etc.
Pornind de la o reprezentare a indicilor sub forma:
n K1n1 + K 2 n2
k K 3k1 + K 4 k2
(7.2)
n Rn1 + n2 ,
N
k k1 + k2 ,
R
WN
= (1) WN
n2 = 0,1,..., R 1
(7.7)
k2 = 0,1,..., R 1
N
n2 ,
R
k R k1 + k2 ,
N
1,
R
N
k1 = 0,1,..., 1,
R
n1 = 0,1,...,
n2 = 0,1,..., R 1
(7.8)
k2 = 0,1,..., R 1
WN2 = e j = 1
WNkN = 1 ,
N
1,
R
N
k1 = 0,1,..., 1,
R
n1 = 0,1,...,
n n1 +
(7.6)
(7.4)
181
182
M N.
x(2n1)
n 2n1 + n2 ,
k k1 +
n1 = 0,1,...,
N
k2 ,
2
TFD
N/2
X(k1)
k1
N/2-1
n2 = 0,1
(7.9)
k2 = 0,1
x(2n1+1)
TFD
N/2
i rezult:
k1
WNk1
N/2-1
N
N
1
2
(2 n1 + n2 ) ( k1 + k2 )
N
2
X (k ) = X (k1 + k2 ) = x(2n1 + n2 )WN
2
n1 = 0 n2 = 0
(7.10)
Trecerea de la transformatele de ordin N / 2 la transformata de ordin N
sau:
X (k1 +
N
1
2
N
k2 ) = x(2n1 ) W Nn1k1 + WN
2
n1 = 0
2
k1 +
N
1
N
k2 2
2
se face prin intermediul unor structuri de tip fluture (figura 0.2). Aceast
x(2n + 1)
n1 =0
W Nn1k1
(7.11)
Dar:
A
k1 +
WN
N
k1
2
= ( 1) 2 WNk1
k
X (k1 ) = x(2n1 ) W
n1 =0
n1k1
N
2
+W
k1
N
N
1
2
x(2n + 1)
1
n1 = 0
W Nn1k1 =
2
X (k1 +
N
1
2
k1
N
B'
N
) = x(2n1 ) W Nn1k1 WNk1 x(2n1 + 1) W Nn1k1 =
2
n1 = 0
n1 =0
2
2
-1
(7.13)
WNk
k1
N
A'
(7.12)
X(k1+N/2)
-1
fluturi.
183
x(0)
X(0)
184
x(4)
X(1)
-1
x(2)
x(6)
W2
W0
-1
X(2)
-1
W1
x(3)
x(7)
X(3)
W0
W0
W2
W0
-1
W2
-1
W3
-1
X(4)
X(5)
-1
-1
-1
X(6)
W0
x(1)
W
W0
x(6)
W0
W0
0
x(7)
X(2)
-1
W2
-1
-1
W0
X(4)
-1
x(5)
X (2k1 + k2 ) = x(n1 +
n1 =0 n2 = 0
-1
-1
-1
k2 = 0,1
N
( n1 + n2 ) (2 k1 + k2 )
N
n2 )WN 2
2
n1 =0
N
-1
-1
-1
(7.17)
N
1
2
(7.18)
2
Se constat iari descompunerea transformatei de ordin N n dou
transformate de ordin N / 2 .
0
1
x(n1)
n1
TFD
N/2
X(2k1)
N/2-1
W1
W2
(7.16)
N
1
2
X(6)
X(1)
-1
(7.15)
X(0)
x(0)
x(3)
n2 = 0,1
n1 = 0
2
ordinea fireasc:
x(4)
N
1
1
2
X(7)
Putem reordona intrrile din graful anterior, x(4) i x(6) n locul lui x(1)
N
1,
2
N
k1 = 0,1,..., 1,
2
n1 = 0,1,...,
deci:
-1
Figura 7.3. Graful unei FFT n baza 2 cu decimare n timp n opt puncte
x(2)
N
n2 ,
2
k 2k1 + k2 ,
-1
W0
-1
n n1 +
x(1)
x(5)
X(5)
0
X(3)
x(n1+N/2)
-1
X(7)
n1
-1
WNk1
TFD
N/2
X(2k1+1)
N/2-1
185
186
x(0)
W0
x(1)
0
x(2)
-1
x(3)
-1
x(5)
-1
x(6)
x(7)
-1
W2
W0
-1
-1
W0
x(4)
X(4)
Principalul element de calcul al rutinei FFT este fluturele din figura 0.2
X(2)
pentru decimare n timp (DIT) i din figura 0.7 pentru decimare n frecven
-1
X(6)
X(1)
W1
W0
-1
W0
-1
W3
-1
X(5)
X(3)
W2
W0
-1
-1
X(7)
Figura 7.6. Graful unei FFT n baza 2 cu decimare n frecven n opt puncte
Ca i n cazul precedent, rezult log 2 N etaje, n fiecare efectundu-se
N / 2 operaii de tip fluture. Structura fluturelui este ns cea din figura 0.7.
A'
-1
WNn
B'
187
188
registre interne disponibile pentru stocarea rezultatelor intermediare, avnduse n vedere c stocarea acestora n memorie necesit mai mult timp de
procesare.
Datele de la intrarea FFT sunt n general eantioane primite de la un
convertor A/D. Achiziia datelor trebuie efectuat n paralel cu calculul FFT
WNk = e
2
k
N
2
k j sin
Wr
2
= cos
N
(7.19)
Wi
A' = A + B WNk
B ' = A B WNk
A' = A + B
WNk
-1
-1
Ar' = Ar + Br
Ai' = Ai + ( BW
i r BrWi )
Ai' = Ai + Bi
Br' = Ar ( BrWr + BW
i i)
Bi' = Ai ( BW
i r BrWi )
Ecuaiile ieirilor fluturelui DIT
B' = ( A B) WNn
A = Ar + ( BrWr + BW
i i)
'
r
WNn
189
190
Index
binar
Distana ntre
nodurile duale
Distana ntre
nodurile duale
000 x(0)
X(0) 000
0
001 x(1)
X(4) 100
-1
A' = A +
B WNk
A' = A + B
010 x(2)
X(2) 010
-1
011 x(3)
100 x(4)
WNk
B' = A
-1
B WNk
-1
WNn
B' = ( A
T1 = Ar + BrWr
MAC
A = T1 + BW
i i
MAC
T1 = Ar Br
B = 2 Ar A
SUBL
Ai' = Ai + Bi
ADD
T2 = Ai BrWi
MAC
T2 = Ai Bi
SUB
'
r
'
r
'
r
A = T2 + BW
i r
'
i
Bi' = 2 Ai Ai'
B) WNn
A = Ar + Br
'
r
MAC
T3 = TW
1 r
SUBL
Br' = T3 T2Wi
T4 = T2Wr
Bi' = T4 + TW
1 i
ADD
110 x(6)
111 x(7)
X(6) 110
-1
X(1) 001
-1
W0
-1
W0
SUB
-1
101 x(5)
-1
Index
binar
Distana ntre
nodurile duale
X(5) 101
-1
X(3) 011
-1
W2
W3
-1
-1
-1
Etaj 1
Etaj 2
Etaj 3
X(7) 111
MPY
MAC
MPY
Etajul 1
Etajul 2
Etajul 3
Etajul log2N
Numr de
grupuri
N/2
Numr de
fluturi pe grup
N/2
N/4
N/8
Distana ntre
noduri duale
N/2
N/4
N/8
(N/4)k,
(N/8)k,
k,
k=0, 1
k=0, 1, 2, 3
k=0 .. N/2-1
MAC
(N/2)k,
Exponentul
coeficienilor W k=0
191
adic log 2 N bii. De exemplu, ntr-o transformat n 1024 de puncte (care are
A ' = A + BW
192
193
194
Nn = 2k 1
Binar
Secvena
ordonat
Adresa
secvenei
iniiale
Secvena
iniial
000
x(0)
$8 = 1000
100
001
x(1)
010
010
x(2)
$9 = 1001
x(6)
110
011
x(3)
$A = 1010
x(1)
001
100
x(4)
x(5)
101
101
x(5)
$B = 1011
x(3)
011
110
x(6)
$C = 1100
x(7)
111
111
x(7)
$D = 1101
$E = 1110
$F = 1111
Secvena
iniial
Decimal
Binar
Decimal
x(0)
000
x(4)
x(2)
(7.23)
Indexul iniial
(7.22)
Modificarea adresei
reverse-carry
R0 = 1000 +
N0 = 0100
R0 = 1100 +
N0 = 0100
R0 = 1010 +
N0 = 0100
R0 = 1110 +
N0 = 0100
R0 = 1001 +
N0 = 0100
R0 = 1101 +
N0 = 0100
R0 = 1011 +
N0 = 0100
R0 = 1111 +
N0 = 0100
Secvena
reordonat
0
4
2
6
1
5
3
7
195
196
7.6.1 Optimizarea
Iniializri
r0
m0
n0
r1
=
=
=
=
data + N/2
0 (bit reversed)
N/2
data + 1
do N-1 points
NU
r0 r1
DA
a = x:(r0)
b = x:(r1)
x:(r0) = b
x:(r1) = a
simetric) sau dac r0 < r1 (ca s nu fie schimbat de dou ori aceeai pereche)
197
nucleului
algoritmului.
Iniializarea
pointerilor,
pregtirea
198
Dei fiecare fluture are dou date complexe de intrare i dou de ieire,
calcularea fluturelui poate fi efectuat folosind aceeai zon de memorie
WN0 = 1 i WNN / 4 = j
(7.24)
C
-1
B
-1
1
-1
-1
199
200
A = ( Ar + Cr ) + ( Br + Dr )
B = ( Ar + Cr ) ( Br + Dr )
C = ( Ar Cr ) + ( Bi Di )
singur unitate MAC tot ase instruciuni sunt necesare, ca mai nainte.
'
r
'
r
'
r
Dr' = ( Ar Cr ) ( Bi Di )
Ai' = ( Ai + Ci ) + ( Bi + Di )
(7.25)
Fiecare grup din ultimul etaj const ntr-un singur butterfly. n acest caz
ciclul de fluturi poate fi eliminat.
Bi' = ( Ai + Ci ) ( Bi + Di )
C = ( Ai Ci ) ( Br Dr )
ordin 4. Deoarece fiecare fluture din ultimul etaj are nevoie de factori de
D = ( Ai Ci ) + ( Br Dr )
'
i
'
i
(7.26)
x(n) = TFDI{ X (k )}(n) =
1 N 1
X (k ) WN nk ,
N k =0
n = 0,1,..., N 1
(7.29)
W = 1, W
0
N
N /4
N
WNN / 8 = WN3 N / 8 =
=j
(7.27)
2
2
j
2
2
(7.28)
Pentru factorii de rotaie se poate utiliza un alt vector dect cel utilizat
la transformata direct, sau se poate folosi acelai vector, dar citirea valorilor
factorilor de rotaie ai transformatei inverse s se fac de la sfritul la
nceputul acestuia, avndu-se n vedere formula:
e
2
k
N
=e
j 2 k
N
(7.30)
*
1
j ( TFD{ j X * (k )})
N
(7.31)
201
202
ntr-adevr:
2
j nk
1 N 1
X ( k )e N
N k =0
TFDI{ X (k )} =
(7.32)
2
j nk
N 1
j ( TFD{ j X (k )}) = j j X * (k )e N =
k =0
N 1
= X (k ) j ( j ) e
*
2
nk
N
k =0
X (k ) = X * ( N k )
(7.35)
(7.36)
2
N 1
j nk
j 2 nk
= j X * (k ) je N = j X (k ) je N =
k =0
k =0
N 1
N 1
= X ( k )e
(7.33)
2
nk
N
k =0
deci
N
2
k1 + k2 2
N
X (k1 + k2 ) = x(2n1 )W Nn1k1 + WN 2 x(2n1 + 1)W Nn1k1
2
n1 = 0
n1 = 0
2
2
(7.37)
Pentru k2 = 0 :
X (k1 ) = X (k1 ) + WNk1 X (k1 )
FFT
(scalare cu 1/N)
(7.38)
x(n) = IFFT{ X (k )}
N
N
k1 ) , X (k1 ) = X ( k1 )
2
2
(7.39)
203
X(
N
N
N
k1 ) = X ( k1 ) WNk1 X ( k1 )
2
2
2
(7.40)
N
(7.41)
k1 ) = Re X (k1 ) cos k1 Re X (k1 ) sin k1 Im X (k1 )
2
N
Im X ( k1 ) = Im X (k1 ) sin k1 Re X (k1 ) + cos k1 Im X (k1 )
2
Re X (
unde
204
2
N
= Re X (k ) + j Im X (k ) + j [ Re Y (k ) + j Im Y (k ) ]
(7.42)
(7.43)
(7.44)
sau
Z (k ) = Re Z (k ) + Im Z (k ) = [ Re X (k ) Im Y (k )] + j [ Im X (k ) + Re Y (k ) ] (7.45)
avnd n vedere formulele (7.36) rezult:
Z ( N k ) = [ Re X (k ) + Im Y (k ) ] j [ Im X (k ) Re Y (k ) ]
Rezult schema din figura 6.12:
(7.46)
x(2n)
x(2n+1)
0
ReX(k1)
TFD :
N/2 :
ImX(k1)
:
0
ReX(k1)
TFD :
N/2 :
ImX(k1)
:
ReX[k1]
ImX[k1]
-1
cos(k1)
sin(k1)
-1
sin(k1)
-cos(k1)
-1
2
=
N
ReX[N/2-k1]
-1
ImX[N/2-k1]
X (k ) =
1
1
[ Re Z (k ) + Re Z ( N k )] + j [ Im Z (k ) Im Z ( N k )]
2
2
(7.47)
Y (k ) =
1
1
[ Im Z ( N k ) + Im Z (k )] + j [ Re Z ( N k ) Re Z (k )]
2
2
(7.48)
X (0) = Re Z (0)
X ( N / 2) = Re Z ( N / 2)
Y (0) = Im Z (0)
Y ( N / 2) = Im Z ( N / 2)
(7.49)
205
206
j 0 <
H H ( ) =
,
j < < 0
(7.50)
{
Y[2*i] = X[2*i+1];
Y[2*i+1] = -X[2*i];
x(n)
FFT
X(k)
HH(k)
XH(k)
IFFT
xH(n)
0k N /2
N / 2 < k < N 1
X H ( k ) = X ( k ) H ( k ) , k = 0,..., N 1
(7.51)
(7.52)
(7.53)