la transformada rápida de fourier expositor: josé luis oropeza rodríguez méxico d. f., a 17 de...
Post on 09-Mar-2015
7 Views
Preview:
TRANSCRIPT
La Transformada rápida de Fourier
Expositor: José Luis Oropeza Rodríguez
México D. F., a 17 de agosto de 2006
OBJETIVO
• Presentar al alumno la forma de obtención de la Transformada Discreta de Fourier de un conjunto de muestras mediante el algoritmo de la Transformada Rápida de Fourier.
BOSQUEJO DE LA PRESENTACIÓN
• Introducción• Antecedentes• Representación y fórmula
matemática• Aplicaciones
Transformada Discreta de Fourier
» x=[1 2 1 0]
x =
1 2 1 0» X=fft(x)
X =
4.0000 -0.0000 - 2.0000i 0 -0.0000 + 2.0000i
EL ALGORITMO DE LA FFT
1
0
2
)(1 N
k
N
nkj
ekTmNNT
nF
Njkn
N
k
kn
eWpara
WkTmNNT
nF
/2
1
0
)(1
Redefiniendo: Como:
La expansión al hacer uso de la expresión anterior se convierte en:
96301
0
3
1
0
64202
32101
0
1
0
00000
1
0
]3[]2[]1[]0[][]3[
]3[]2[]1[]0[][]2[
]3[]2[]1[]0[][]1[
]3[]2[]1[]0[][]0[
40][][
WxWxWxWxWkxx
WxWxWxWxWkxx
WxWxWxWxWkxX
WxWxWxWxWkxX
nparaWkxnX
N
k
k
N
k
k
N
k
k
N
k
N
k
nk
EL ALGORITMO DE LA FFT
La expresión anterior toma la forma matricial:
]3[
]2[
]1[
]0[
1
1
1
1111
]3[
]2[
]1[
]0[
]3[
]2[
]1[
]0[
]3[
]2[
]1[
]0[
963
642
321
9630
6420
3210
0000
x
x
x
x
WWW
WWW
WWW
X
X
X
X
bieno
x
x
x
x
WWWW
WWWW
WWWW
WWWW
X
X
X
X
EL ALGORITMO DE LA FFT
La expresión anterior se puede simplificar debido a que: Wnk=Wmod(nk,N), lo cual se puede verificar con:
Considerando en este caso que N=8
EL ALGORITMO DE LA FFT
]3[
]2[
]1[
]0[
1
1
1
1111
]3[
]2[
]1[
]0[
123
202
321
x
x
x
x
WWW
WWW
WWW
X
X
X
X
Por lo tanto la expresión se convierte en:
La cual se puede descomponer en la forma:
]3[
]2[
]1[
]0[
010
001
010
001
100
100
001
001
]3[
]2[
]1[
]0[
2
2
0
0
3
1
2
0
x
x
x
x
W
W
W
W
W
W
W
W
X
X
X
X
Que contiene el segundo y tercer renglón invertidos con relación a la matriz original.
EL ALGORITMO DE LA FFT
La matriz anterior puede ser descompuesta como el producto de 2 partes separables, de tal forma que la expresión para la primera de ellas queda de la forma:
3
1
2
0
2
2
0
0
100
100
001
001
*
]3[
]2[
]1[
]0[
010
001
010
001
]3[
]2[
]1[
]0[
W
W
W
W
x
x
x
x
W
W
W
W
X
X
X
X
)3()1()3(
)2()0()2(
)3()1()1(
)2()0()0(
21
21
01
01
xWxx
xWxx
xWxx
xWxx
)3()1()3(
)2()0()2(
)3()1()1(
)2()0()0(
01
01
01
01
xWxx
xWxx
xWxx
xWxx
EL ALGORITMO DE LA FFT
Con lo que se llega a la siguiente expresión:
)3(
)2(
)1(
)0(
100
100
001
001
]3[
]2[
]1[
]0[
1
1
1
1
3
1
2
0
x
x
x
x
W
W
W
W
X
X
X
X
)3()2()3(
)3()2()2(
)1()0()1(
)1()0()0(
13
1
11
1
12
1
10
1
xWxX
xWxX
xWxX
xWxX
)3()2()3(
)3()2()2(
)1()0()1(
)1()0()0(
11
1
11
1
10
1
10
1
xWxX
xWxX
xWxX
xWxX
Generalizando el algoritmo se puede observar que el coste de cálculo se reduce del orden de O(Nlog2 N) frente al orden O(N2).
EJEMPLO DE LA FFT
Suponga la secuencia de entrada dada por el ejercicio antes analizado en esta presentación:
Se aplica el algoritmo de la FFT (Cooley-Tukey) mencionado anteriormente para encontrar la DFT.
)3()1()3(
)2()0()2(
)3()1()1(
)2()0()0(
21
21
01
01
xWxx
xWxx
xWxx
xWxx
3
1
2
0
2
2
0
0
100
100
001
001
*
0
1
2
1
010
001
010
001
]3[
]2[
]1[
]0[
W
W
W
W
W
W
W
W
X
X
X
X
)3()1()3(
)2()0()2(
)3()1()1(
)2()0()0(
01
01
01
01
xWxx
xWxx
xWxx
xWxx
202)0(2)3(
011)1(1)2(
202)0(2)1(
211)1(1)0(
01
01
01
01
Wx
Wx
Wx
Wx
EJEMPLO DE LA FFT
2
0
2
2
100
100
001
001
]3[
]2[
]1[
]0[
3
1
2
0
W
W
W
W
X
X
X
X
)3()2()3(
)3()2()2(
)1()0()1(
)1()0()0(
13
1
11
1
12
1
10
1
xWxX
xWxX
xWxX
xWxX
)3()2()3(
)3()2()2(
)1()0()1(
)1()0()0(
11
1
11
1
10
1
10
1
xWxX
xWxX
xWxX
xWxX
jjjseneWX
jjjseneWX
WX
WX
j
j
2)0(2))21()
21
(cos(2)(2)2(0)3(
2)0(2))21()
21
(cos(2)(2)2(0)2(
022)2(2)1(
422)2(2)0(
4/21
)4/21
0
0
X(0)=4
X(1)=-2j
X(2)=0
X(3)=2j
Aplicando bit reversi
Se puede observar que en el caso de la decimación en el tiempo, la secuencia de entrada debe ser reordenada mientras que la salida aparece en el orden correcto.
Para la decimación en frecuencia, la secuencia está ordenada mientras que la salida habrá que reordenarla.
Se da la circunstancia que esa reordenación es implemente invertir el índice en binario. Por ejemplo, en la misma posición x[1[] aparece X[4], y 001 invertido es 100.
En donde , y cada una de los términos de la sumatoria es reducido a N/2 puntos de la DFT. Gráficamente, el cálculo se ha reducido a:
DECIMACIÓN EN TIEMPO
NjN
N
m
kmN
N
m
mkN
parn imparn
knN
knN
N
n
nkN
eWdonde
WmxWmxkX
WnxWnx
NkWnxkX
/2
1)2/(
0
)12(1)2/(
0
2
1
0
:
)12()2()(
)()(
,.....,2,1,0)()(
nN
nN WW 2/2
Otra forma de visualizar la descomposición de la FFT es factorizar la expresión de la DFT en muestras de entrada par e impar, tal que:
Considerando que f1 y f2 representen las componentes de la muestra de entrada par e impar respectivamente; esto es, f1(m)=x(2m) y f2(m)=x(2m+1), m=0,1,…..,(N/2)-1, la suma anterior puede escribirse de la forma.
1)2/(
02/2
1)2/(
02/1 )()()(
N
m
mkN
N
m
kN
mkN WmfWWmfkX
DECIMACIÓN EN TIEMPO
)()( 21 kFykF
La forma general que adoptan las ecuaciones anteriores es:
Ya que la salida de la DFT es periódica, X1(k)=X1(k+N/2) y X2(k)=X2(k+N/2). La última ecuación es comúnmente llamada la mariposa de la FFT de la Decimación en Tiempo.
Tomando en consideración el hecho de que:
12
,....,1,0
,
)()(
)()()2/(
)()()(
2/)2/(
2/2/
21
22/
1
21
Nkcon
WWyWW
donde
kFWkF
kFWkFNkX
kFWkFkX
mkN
NkmN
kN
NkN
kN
NkN
kN
Son las DFT’s de N/2 puntos de las secuencias f1(m) y f2(m), respectivamente
DECIMACIÓN EN TIEMPO
1)2/(,....,1,0)()()2
(
1)2/(,....,1,0)()()(
21
21
NkkGkGN
kX
NkkGkGkX
Para ser consistentes con la notación que anteriormente se utilizó, se tiene:
Así la DFT X(k) se puede expresar como:
1)2/(,....,2,1,0)()(
1)2/(,.....,1,0)()(
)()()(
22
11
21
NkkFWkG
NkkFkG
kFWkFkX
kN
kN
Este cálculo se muestra en la siguiente figura:
DECIMACIÓN EN TIEMPO
x(0)x(2)
x(4)
x(N-2)
x(1)x(3)
DFT de
N/2 puntosF1(0)
F1(1)F1(2)
F1(N/2-1)
F2(0)
F2(1)
X(N/2-1)
X(N-1)
X(N/2)
X(N/2+1)
DFT de
2 puntos
X(0)X(1)
G1(k)
G2(k)
Factores de fase k
NW
DECIMACIÓN EN TIEMPOHabiendo realizado el diezmado en tiempo una vez, se puede repetir el proceso para cada una de las secuencias f1(n) y f2(n). Por lo tanto, f1(n) dará lugar a las dos secuencias de N/4 puntos.
y f2(n) dará lugar a:
14
,.....,1,0)12()(
14
,.....,1,0)2()(
112
111
Nnnfnv
Nnnfnv
14
,.....,1,0)12()(
14
,.....,1,0)2()(
222
221
Nnnfnv
Nnnfnv
DECIMACIÓN EN TIEMPOCalculando las DFTs de N/4 puntos obtendremos las DFTs de dos puntos F1(k) y F2(k) a partir de las relaciones.
14
,.......,1,0)()()4
(
14
,.......,1,0)()()(
14
,.......,1,0)()()4
(
14
,.......,1,0)()()(
222/212
222/212
122/111
122/111
NkkVWkV
NkF
NkkVWkVkF
NkkVWkV
NkF
NkkVWkVkF
kN
kN
kN
kN
EJEMPLO
)()()2/(
)()()(
)12()(,)2()(
:exp
)12()2()2/(
)12()2()(
122cos
11,012
,0,4
)12()2()2/(
)12()2()2/(
)12()2()(
,,,:
21
21
1)2/(
0
22
1)2/(
0
21
1)2/(
0
21)2/(
0
2
1)2/(
0
21)2/(
0
2
222/2
2/122/12/
1)2/(
0
2/221)2/(
0
2/2/22
1)2/(
0
2/21)2/(
0
2/2/2
1)2/(
0
21)2/(
0
2
3210
kfWkfNkX
kfWkfkX
WnxkfWnxkf
anterioresresioneslasreduciendo
WnxWWnxNkX
WnxWWnxkX
finalalquedando
njsenneneWWademás
eeWWN
kNpara
WWnxWWWnxNkX
WnxWWnxNkX
WnxWWnxkX
xxxxnxsiendo
kN
kN
N
n
nkNo
N
n
nkNe
N
n
nkNo
N
n
kN
nkNe
N
n
nkNo
N
n
kN
nkNe
njnjnnNN
jjNN
N
m
nNN
nkNo
N
n
NkN
nNN
nkNe
N
m
NknNo
N
n
NkN
NknNe
N
n
nkNo
N
n
kN
nkNe
)3()1()2()0()3(
)3()1()2()0()1(
1
)3()1()2()0()2(
)3()1()2()0()0(
0
)3()1()3()1()1(
)3()1()3()1()0(
)2()0()2()0()1(
)2()0()2()0()0(
,)1(),0(
)1(),0(
)3()1()12()1(
)2()0()2()1(
)3()1()12()0(
)2()0()2()0(
)1()1()3(
)1()1()1(
1
)0()0()2(
)0()0()0(
0
04
14
04
04
14
04
04
04
04
04
04
04
04
04
04
04
04
24
042
04
04
04
042
04
24
041
04
04
04
041
22
11
24
04
1)2/(
0
22
24
04
1)2/(
0
21
04
04
1)2/(
0
22
04
04
1)2/(
0
21
2141
2141
2041
2041
xWxWxWxX
xWxWxWxX
kpara
WxWxWWxWxX
WxWxWWxWxX
kpara
xWxWxWxf
WxWxWxWxf
xWxWxWxf
WxWxWxWxf
salidasanalizandomariposaotraladesalidaslassonffquemientras
ymariposaunadesalidassonffqueobservasefiguralaen
WxWxWnxf
WxWxWnxf
WxWxWnxf
WxWxWnxf
doSustituyen
fWfX
fWfX
kpara
fWfX
fWfX
kpara
N
n
nkNo
N
n
nkNe
N
n
nkNo
N
n
nkNe
X0
X1
X2
X3
f1(0)
f1(1)
f2(0)
f2(1)
x(0)
x(2)
x(1)
x(3)W0
4
W04
W04
W14
-1
-1
-1
-1
DECIMACIÓN EN TIEMPO
W80
W80
W80
W80
W80
W82
W80
W82
W82
W83
W81
W80
-1 -1 -1
-1-1-1
-1
-1
-1
-1
-1
-1
MARIPOSA BÁSICA DEL ALGORITMO DE LA FFT DE DIEZMADO EN EL TIEMPO
Obsérvese que el cálculo básico que se realiza en cada etapa, como se muestra en la figura de la diapositiva anterior, consiste en tomar dos números complejos, esto es (a,b), multiplicar por , y restar el producto obtenido de a para obtener los dos nuevos números complejos (A,B). Este cálculo básico, que se ilustra en la siguiente figura
rNW
A=a+WN’b
B=a-WN’bWN’
-1
DECIMACIÓN EN FRECUENCIA
ALGORITMO DE LA FFT POR DECIMACIÓN EN FRECUENCIA CON
RADIX-2Considere una secuencia de entrada en el dominio del tiempo x(n) que se puede separar en dos mitades
)1(),......,1(),0( 2 Nxxx
1)2/(
0
1
2/
)()()(N
n
N
Nn
nknk WnxWnxkX
1)2/(
0
1)2/(
0
)2
()()(N
n
N
n
nknk WN
nxWnxkX
2/Nnn
kkkjjkkN jseneeW 1cos2/
2/kNW
y 1,.......,12
,2
Nx
Nx
N
Tomando la DFT de cada conjunto de secuencia en las expresiones anteriores, queda
Considerando en la segunda suma de 6.8; X(k) se convierte en
En donde se toma fuera de la seguna sumatoria debido a que no es una función de n. Utilizando
Debido a que para cada k par y -1 para k impar, la ecuación anterior puede ser separada para k par e impar, o bien
1. Para k impar:
2. Para k par:
DECIMACIÓN EN FRECUENCIA
nkN
n
k WN
nxnxkX
1)2/(
0 21)()(
nkN
n
WN
nxnxkX
1)2/(
0 2)()(
nkN
n
WN
nxnxkX
1)2/(
0 2)()(
Sustituyendo k=2k para k par, y k=2k+1 para k impar, las expresiones anteriores pueden escribirse de la forma k=0,1,…..,(N/2)-1 como
nkN
n
WN
nxnxkX 21)2/(
0 2)()2(
nknN
n
WWN
nxnxkX 21)2/(
0 2)()12(
k1
)2/()()(
)2/()()(
Nnxnxnb
Nnxnxna
2/NWNWDebido a que la constante twiddle W es una función de longitud N, ésta puede ser representada como . Entonces se puede escribir como . Considere
2NW
Las ecuaciones anteriores pueden ser escritas de forma más clara como DFTs de (N/2) puntos, o bien
1)2/(
02/
12/
02/
)()12(
)()2(
N
n
nkN
nN
N
n
nkN
WWnbkX
WnakX
La siguiente figura muestra la descomposición de una DFT de N puntos en dos DFTs de (N/2)-puntos para N=8. Como un resultado del proceso de descomposición, las Xs en la figura son pares en la mitad superior y los impares en la mitad más baja. El proceso de descomposición se puede repetir de tal forma que cada (N/2)-puntos será descompuesto en dos DFTs de (N/4) puntos, como se ilustra en la figura de la derecha, también para N=8.
Considere que la entrada x(n) representa una forma de onda rectangular, o x(0)=x(1)=x(2)=x(3)=1 y x(4)=x(5)=x(6)=x(7)=0. Los ocho puntos del diagrama de flujo de la figura anterior se pueden utilizar para encontrar las secuencias de salida X(k), k=0,1,…..,7. Con N=8, cuatro constantes gemelos (twiddle) a ser calculadas, o
7071.07071.0
7071.07071.0)4/sin()4/cos(
1
8/63
8/42
8/21
0
jeW
jeW
jjeW
W
j
j
j
La salida de secuencia intermedia se puede encontrar después de cada etapa.
)7('7071.07071.0)7()3(
)6(')6()2(
)5('7071.07071.0)5()1(
)4('1)4()0(
3'1)7()3(
2'1)6()2(
1'1)5()1(
0'1)4()0(
1
3
2
1
0
xjWxx
xjWxx
xjWxx
xWxx
xxx
xxx
xxx
xxx
Etapa
En donde x’(0), x’(1),…..,x’(7) representa la secuencia de la salida intermedia después de la primera iteración, lo cual se convierte en la entrada a la segunda etapa.
7''41.1)7(')5('
6''1)6(')4('
5''41.1)7071.07071.0()7071.07071.0()7(')5('
4''1)6(')4('
3''0)3(')1('
2''0)2(')0('
1''2)3(')1('
0''2)2(')0('
2
2
0
2
0
xjWxx
xjWxx
xjjxx
xjxx
xWxx
xWxx
xxx
xxx
Etapa
El resultado intermedio, la secuencia de salida de la segunda etapa x’’(0), x’’(1),……..,x’’(7) se convierte en la secuencia de entrada de la tercera etapa.
41.21)7('')6('')7(
41.0141.11)7('')6('')3(
41.01)5('')4('')5(
41.2141.11)5('')4('')1(
0)3('')2('')6(
0)3('')2('')2(
0)1('')0('')4(
4)1('')0('')0(
3
jxxX
jjjxxX
jxxX
jjjxxX
xxX
xxX
xxX
xxX
Etapa
Ahora se utiliza la notación de X’s para representar la secuencia de salida final. Los valores de X(0), X(1), …… , X(7) froman la secuencia de salida invertida. Estos resultados pueden ser verificados con MATLAB, la secuencia de salida se debe de reordenar y con ellos graficar la magnitud de salida.La FFT de 16 puntos. Dados los valores de una señal de entrada x(0)=x(1)=……=x( 7)=1, y x(8)=x(9)=….=x(15)=0, la cual representa una secuencia de entrada rectangular. La secuencia de salida puede encontrarse utilizando el grafo de 16 puntos que se ilustra en la siguiente figura. Los resultados intermedios de la salida de cada etapa se encuentran de una forma similar a la del ejercicio anterior. Ocho constantes gemelas W0, W1,….,W7 se requieren calcular para N=16.
El algoritmo se estructura en niveles de cómputo . Para el desarrollo de este algoritmo deben tenerse en cuenta los siguientes puntos:
•Cada par de puntos de un cierto nivel s obtienen a partir de otros dos del nivel anterior. Estos dos puntos origen se dicen que son nodos duales.
•El espaciado entre dos nodos duales es
•Cómputo de nodos duales: mariposas. El cómputo de dos nuevos nodos a partir de dos nuevos nodos duales se denomina mariposa. Su estructura se muestra en la gráfica (b) y se corresponde con la siguiente expresión:
DECIMACIÓN EN FRECUENCIA
)2/()()2/(
)2/()()(
11
11
ll
pl
ll
ll
pll
NkxWkxNkx
NkxWkxkx
N2log
Lo cual se puede simplificar a la estructura mostrada en la parte c de la figura.
,.....,3,2,1
Determinación de Wp
1.Escribir k (nodo actual) en forma de número binario de bits
2.Desplazar bits a la derecha (rellenando con ceros)
3.Invertir el orden de los bits (001 pasa a 100). El resultado es p.
DECIMACIÓN EN FRECUENCIA
,.....,3,2,1
log 2
N
1
PSEUDOCÓDIGO PARA IMPLEMENTAR LA TRANSFORMADA RÁPIDA DE FOURIER
m=LOG(N)/LOG(2)N2=NDO k=1, m N1=N2 N2=N2/2 angle=0 arg=2(pi)/N1 DO j=0, N2-1
c=cos(angle) s=-sin(angle) DO i=j, N-1, N1 kk=i+N2 xt=x(i)-x(kk) x(i)=x(i)+x(kk) yt=y(i)-y(kk) y(i)=y(i)+y(kk) x(kk)=xt*c-yt*s y(kk)=yt*c+xt*sEND DO angle=(j+1)*arg
END DOEND DO
j=0DO i=0, N-2 IF (i<j) THEN xt=xj xj=xi xi=xt yt=yj yj=yi yi=yt END IF k=N/2 DO IF (k>=j+1) EXIT j=j-k k=k/2 END DO j=j+kEND DODO i=0, N-1 x(i)=x(i)/N y(i)=y(i)/NEND DO
CONCLUSIONES
• Se realizó un breve panorama histórico del algoritmo de la trasformada rápida de Fourier
• Se demostró la representación en algebra lineal del algoritmo de la FFT.
• Se encontraron los elementos adecuados para determinar de manera adecuada un algoritmo sencillo y práctico para determinar la Transformada rápida de Fourier.
top related