Professional Documents
Culture Documents
DEPARTAMENTO DE ELECTRNICA
LECTURA 5
TRANSFORMADA RPIDA DE FOURIER FFT
LABORATORIO DE PROCESAMIENTO DIGITAL DE SEALES ELO385 RODRIGO HUERTA CORTS ALEJANDRO HERRERA
INTRODUCCIN
El anlisis frecuencial de seales en tiempo discreto se realiza, normalmente, de forma ms conveniente en procesadores de seales digitales que pueden ser computadores de propsito general (PCs) o hardware especialmente diseado. Para realizar el anlisis frecuencial de una seal discreta es necesario convertir la secuencia {x(n)} en el dominio del tiempo en una secuencia equivalente en el dominio de la frecuencia. La Transformada Discreta de Fourier (DFT) juega un papel importante en numerosas aplicaciones de procesamiento de seales digitales. Entre otras destacan: filtrado lineal, anlisis de correlacin y anlisis espectral. Una de las razones de la importancia de la DFT es la existencia de algoritmos sumamente eficientes para su clculo. Uno de los ms utilizados es el denominado Radix 2, el cual se basa en el hecho de analizar una secuencia que posee un nmero tamao N que es una potencia de 2. Existe un algoritmo denominado Radix 4, cuyo nombre deriva de la misma razn del Radix 2. Estos tipos de algoritmos permiten calcular en forma rpida y sumamente eficiente la DFT. Se denominan FFT por la sigla en ingls de Fast Fourier Transform. Como veremos ms adelante, la DFT requiere de grandes cantidades de operaciones matemticas para lograr el mismo resultado que los algoritmos FFT. En particular, el clculo de la FFT (con el algoritmo Radix 2) usando 1024 puntos puede mejorar la rapidez hasta en alrededor de 200 veces la velocidad de calculo directo la DFT. En las siguientes secciones se muestra el algoritmo FFT radix 2 que utiliza el criterio de Decimacin en Frecuencia, el cual se basa en la descomposicin sucesiva de la entrada en subsecuencias cada vez ms pequeas, hasta cierto lmite.
RAHC - 2003
(1)
Con lo anterior, el calculo de un punto de la transformada discreta de fourier est dada por: X (k ) = x(0)W 0 + x(1)W k + x(2)W 2 k + ....x( N 1)W k ( N 1) k = 0, 1, 2, ...N-1 (2)
Desarrollando (2) para los N valores posibles de k se obtiene una matriz de tamao NxN. De (2) se puede calcular el nmero de operaciones necesarias para realizar la transformacin de los datos mediante este algoritmo. El nmero de sumas complejas que se deben realizar es de (N-1)N y la cantidad de multiplicaciones complejas asciende a N2. Es claro que sta cantidad de operaciones es alta y requiere de un enorme poder de clculo. El clculo directo de la DFT no es eficiente debido, fundamentalmente, a que no explota las propiedades de simetra y periodicidad del factor de fase WN. De la observacin de (2) es claro que no es necesario realizar las N2 multiplicaciones ya que los valores de los factores W0 = 1 no son necesarios de multiplicar. Adems existen propiedades de periodicidad y simetra en stos factores de forma tal que: W k+N = W k W k + N / 2 = W k (3) (4)
La simetra y periodicidad de los factores W quedan de manifiesto en la figura siguiente. El ejemplo es para N = 8.
W6 = W14 = ... W5 = W13 = ... W7 = W15 = ...
W4 = W12 = ...
W0 = W8 = ...
W1 = W9 = ...
RAHC - 2003
A partir del algoritmo DFT y las consideraciones anteriores es posible llegar a un mtodo de clculo mucho ms eficiente, que entrega los mismos resultados y con un nmero menor de operaciones. Es el llamado algoritmo de Transformada Rpida de Fourier (FFT, Fast Fourier Transform).
(5)
Si se reemplaza n = n + N/2 en la segunda sumatoria de (5) queda X (k ) = x(n)W nk + W kN / 2 x(n + Donde WkN/2 sale de la sumatoria por no estar en funcin de n.
n =0 n =0 N 1 2 N 1 2
N )W nk 2
(6)
Usando W kN / 2 = (cos( ) jsen( )) k = 1k , (6) queda de la forma siguiente N X (k ) = x(n) + (1) k x(n + )W nk 2 n =0
N 1 2
(7)
A partir del hecho de que (-1)k = 1 para k par y (-1)k = -1 para k impar, (7) puede ser separada en sumatorias para secuencias pares e impares N X (k ) = x(n) + x(n + )W nk , para k par 2 n =0 N X (k ) = x(n) x(n + )W nk , para k impar 2 n =0
N 1 2 N 1 2
(8)
(9)
Si se reemplaza k = 2k para la sumatoria de los pares y k = 2k+1 para la sumatoria de los impares, (8) y (9) pueden ser reescritas como N X (2k ) = x(n) + x(n + )W 2 nk , para k par 2 n =0 N X (2k 1) = x(n) x(n + )W 2 nkW n , para k impar 2 n =0 RAHC - 2003
4
N 1 2 N 1 2
(10)
(11)
Para facilitar la escritura y aprovechando que los factores W son funciones de perodo N, los factores 2 pueden ser reescritos de la forma siguiente:W N . Luego W N puede ser representado como WN / 2 . Sean a(n) = x(n) + x(n + N / 2) b(n) = x(n) x(n + N / 2) Las ecuaciones (12) y (13) pueden ser escritas ms claramente como 2 DFT de N/2 puntos, o
nk X (2k ) = a (n)WN / 2 n =0 N 1 2 n =0 N 1 2
(12) (13)
(14) (15)
La figura 2 muestra la descomposicin de una DFT de N puntos en dos DFT de N/2 puntos para el caso de N = 8. Aplicando (14) y (15) es posible llegar a obtener los Xs de la primera etapa de la FFT.
a(0) x(0) a(1) x(1) a(2) x(2) a(3) x(3) b(0) x(4) x(5) x(6) x(7) -1 b(1) -1 b(2) -1 b(3) -1 W3
N
N/2 DFT
W1N W2N
N/2 DFT
Como resultado del proceso de descomposicin, los Xs quedan ordenados en grupos de pares e impares. El proceso de descomposicin puede ser repetido nuevamente pero esta vez para N/4, que para el caso de 8 puntos, es la etapa final. El nmero de etapas, o DFTs, se deber repetir hasta llegar a la DFT de 2 puntos. En general una FFT de N puntos tendr a etapas, con N = 2 a .
RAHC - 2003
Etapa 1
x(0) x(1)
Etapa 2
Etapa 3
X(0)
N/4 DFT
X(4) W0 x(2) x(3) W0 x(4) x(5) x(6) x(7) -1 -1 -1 -1 W1
N N
-1 -1
X(2)
W2N
N/4 DFT
X(6) X(1)
N/4 DFT
X(5) W0N -1 W2
N
W2N W3
N
X(3)
N/4 DFT
X(7)
-1
Figura 3: Descomposicin de una DFT de N/2 puntos en 4 DFTs de N/4 puntos, para N = 8.
En la figura 3 es posible ver que la salida del algoritmo est desordenada. Esto se debe a que en las etapas que componen el algoritmo cada vez se realiza un agrupamiento de los datos almacenados en posiciones pares de memoria y los almacenados en posiciones impares. Por esta razn la salida necesita ser reordenada. El proceso que deja correctamente ordenados los datos de salida se denomina bit-reverse y ser explicado ms adelante. La ltima descomposicin, ya que se ha llegado a aplicar la DFT de 2 puntos, es la ms baja descomposicin del algoritmo Radix 2. Una DFT de 2 puntos las salidas X(n) pueden ser escritas como se observa en (16) y (17) X (0) = x(0)W 0 + x(1)W 0 = x(0) + x(1) X (1) = x(0)W 0 + x(1)W 1 = x(0) x(1) recordar que W = -1. Las ecuaciones (16) y (17) pueden ser representadas en un diagrama de flujo conocido como Mariposa. Este es el diagrama de flujo de la etapa final de todo algoritmo FFT que utiliza la decimacin en frecuencia.
1
(16) (17)
x(0)
x(1)
La decimacin en Frecuencia adquiere su nombre del hecho de que la secuencia de salida X(k) es descompuesta (decimada) en subsecuencias ms pequeas, continuando por a etapas o iteraciones. La RAHC - 2003
6
salida X(k) posee componentes tanto reales como imaginarios, y el algoritmo FFT se puede acomodar a entradas tanto reales como complejas. La FFT no es una aproximacin de la DFT, sino que es un algoritmo ms eficiente que se vuelve ms y ms importante a medida que N aumenta. El diagrama final del algoritmo Radix 2, con decimacin en frecuencia es mostrado en la figura 5.
Etapa 1
x(0) x(1) -1 x(2) -1 x(3) -1 x(4) -1 x(5) -1 x(6) -1 x(7) -1 W3 N -1 W2 N -1 W2 N -1 X(7) W0 N W1 N -1 X(3) X(5) W0 N W2 N -1 X(1) X(6) W0 N X(2)
Etapa 2
Etapa 3
X(0) X(4)
Figura 5: Diagrama de flujo de clculo de una FFT de 8 puntos usando decimacin en frecuencia
Una alternativa al diagrama de flujo mostrado en la figura 5 puede ser obtenida con entradas desordenadas (aplicando bit reverse a la secuencia de entrada) y salidas ya ordenadas. 1.1.1 Un ejemplo completo para el caso de N = 8
Sea la secuencia de entrada x(0) = x(1) = x(2) = x(3) = 1 y x(4) = x(5) = x(6) = x(7) = 0. Se encontrar su secuencia X(k), k = 1, 2, ...,7. Para N = 8, los coeficientes W pueden ser calculados slo una vez y luego almacenados para ocuparlos luego durante la aplicacin del algoritmo. No resulta eficiente generalizar la funcin que los calcula e incluirla dentro de las iteraciones de clculo. Los valores son:
W0 = W1 = W2 = W3 = 1 e-j2/8 = cos(/4) j sin (/4) = 0.707 j 0.707 e-j4/8 = - j e-j6/8 = - 0.707 j 0.707
Las salidas intermedias de la secuencia de salida pueden ser obtenidas para cada etapa: Etapa 1:
x(0) + x(4) = x(1) + x(5) = x(2) + x(6) = x(3) + x(7) = [x(0) - x(4)]W0 = [x(1) - x(5)]W1 = [x(2) - x(6)]W2 = [x(3) - x(7)]W3 = 1 1 1 1 1 0.707 j0.707 -j -0.707 j0.707 7 x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7)
RAHC - 2003
Aqu x(0), x(1),..., x(7) representan las salidas intermedias luego de la primera iteracin. Ahora stas son utilizadas como entradas para la siguiente etapa Etapa 2:
x(0) + x(2) = x(1) + x(3) = [x(0) x(2)]W0 = [x(1) x(3)]W0 = x(4) + x(6) = x(5) x(7) = (0.707 j0.707) + (-0.707 j0.707) = [x(4) x(6)]W0 = [x(5) x(7)]W2 = 2 2 0 0 1 j j1.41 1+ j j1.41 x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7)
La secuencia x(0), x(1),..., x(7) representan las salidas intermedias luego de la segunda iteracin. Nuevamente son utilizadas como entradas para la siguiente etapa
X(0) = X(4) = X(2) = X(6) = X(1) = X(5) = X(3) = X(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = x(7) + x(7) = 4 0 0 0 (1 j) + ( j1.41) = 1 j2.41 1 + j0.41 (1 + j) + ( j1.41) = 1 j0.41 1 + j2.41
Ahora la notacin X(k) representa la salida final del algoritmo. Los valores X(0), X(1),..., X(7) forman la secuencia de salida ordenada. Los resultados pueden ser verificados en MATLAB utilizando la funcin fft(). Un ejemplo completo para el caso de una FFT de 16 puntos utilizando el algoritmo Radix 2 se presenta a continuacin en la figura 6. La secuencia de entrada corresponde a un escaln temporal.
RAHC - 2003
N 1 2
(18)
(19)
(20) (19)
(20)
La ecuacin (20) debe ser interpretada para k < (N/2) 1. Usando la simetra de W, Wk+N/2 = -Wk, X (k + N / 2) = C (k ) W k D(k ) para k = 0, 1, 2, ...(N/2 1) Por ejemplo, para N = 8, (20) y (21) quedan X (k ) = C (k ) + W k D(k ) k = 0, 1, 2, 3 X (k + 4) = C (k ) W D(k ) k = 0, 1, 2, 3
k
(21)
(22) (23)
La figura 7 muestra la descomposicin de una DFT de 8 puntos en 2 DFTs de 4 puntos con el procedimiento de decimacin en el tiempo.
RAHC - 2003
C(0) x x x x x x x x
(0) X(0)
C(1)
(2)
0
W
N/2 DFT
X(1)
C(2) C(3)
1
W
(4)
X(2)
2
W
(6)
X(3)
D(0)
(1) -W
3
W
X(4)
D(1)
(3)
N/2 DFT
1
-W
X(5)
D(2)
2
-W D X(6)
(5)
(3)
3
-W X(7)
(7)
Figura 7: Descomposicin de una DFT de 8 puntos en 2 DFTs de 4 puntos usando decimacin en tiempo.
Esta descomposicin es repetida para cada DFT de 4 puntos, llegando a 4 DFTs de 2 puntos. Ya que la ltima descomposicin es de 2 puntos este es fin del algoritmo, como se muestra en la figura 8.
x(0) X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7)
N/4 DFT
x(4) x(2)
W0 W2
N/4 DFT
x(6) x(1)
-W0 -W2
N/4 DFT
x(5) x(3)
W0 W2
N/4 DFT
x(7)
-W0 -W2
La figura 9 muestra el diagrama de flujo final para una FFT de 8 puntos usando decimacin en tiempo. La secuencia de entrada est desordenada de la misma forma que la salida se encuentra desordenada en la decimacin en frecuencia. Con la secuencia de entrada x(n) desordenada, la salida resultante, X(s) queda debidamente ordenada.
RAHC - 2003
10
Idnticos resultados se obtienen con ambos procesos de clculo de la FFT (decimacin en tiempo y en frecuencia). Un diagrama de flujo alternativo al mostrado en la figura 9 se puede obtener con una secuencia de entrada ordenada y una salida desordenada.
RAHC - 2003
11