algoritmo fft

15
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER TRANSFORMADA RÁPIDA DE FOURIER (FFT) 1. RESUMEN La transformada rápida de Fourier (Fast Fourier Transform FFT) es un algoritmo extremadamente rápido para calcular la transformada discreta de Fourier (Discrete Fourier Transform DFT), ambos son métodos que en la práctica ejecuta un computador sobre datos discretos. A menudo cuando se presentan señales en el tiempo de larga duración, se hace inviable ejecutar la DFT, por esto fue necesaria la creación de la FFT, originalmente descubierta por Gauss (1805), fue redescubierta por J. W. Cooley y O. W. Tukey en IBM durante 1960 C.S. Burrus, de la Universidad de Rice University siendo jefe del departamento de Ingeniería, literalmente "escribió el libro" de los algoritmos de la rápida Transformada Discreta de Fourier DFT. Existen distintos métodos para calcular la FFT, en general los podemos dividir en 2 tipos: decimación en el tiempo, y diezmado en la frecuencia. El algoritmo busca reducir el número de multiplicaciones efectuadas en la DFT, reduciendo el número de cálculos para N datos de 2N 2 a 2N·log 2 N, donde N debe ser una potencia de 2.Usualmente la presentación del algoritmo FFT se realiza de forma polinomial pero también puede ser presentado de forma matricial. La FFT explota las simetrías en la matriz W (ec.2.7) para aproximarse a una matriz diagonal. En la actualidad existen algoritmos aun más eficientes de calcular la DFT que inclusive el algoritmo FFT de Cooley y Tukey. No hablaremos del actual algoritmo de la FFT aquí. 2. FUNDAMENTO: 2.1 ANALSÍS DE FOURIER EN TIEMPO DISCRETO: Una señal discreta será periódica si se cumple: , en donde N, periodo fundamental, es un entero mínimo. La exponencial compleja es un ejemplo de función periódica discreta. D. L. LL. FIEE-UNI 1

Upload: paul-dremyn

Post on 06-Jun-2015

11.452 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

TRANSFORMADA RÁPIDA DE FOURIER (FFT)

1. RESUMEN

La transformada rápida de Fourier (Fast Fourier Transform FFT) es un algoritmo extremadamente rápido para calcular la transformada discreta de Fourier (Discrete Fourier Transform DFT), ambos son métodos que en la práctica ejecuta un computador sobre datos discretos. A menudo cuando se presentan señales en el tiempo de larga duración, se hace inviable ejecutar la DFT, por esto fue necesaria la creación de la FFT, originalmente descubierta por Gauss (1805), fue redescubierta por J. W. Cooley y O. W. Tukey en IBM durante 1960 C.S. Burrus, de la Universidad de Rice University siendo jefe del departamento de Ingeniería, literalmente "escribió el libro" de los algoritmos de la rápida Transformada Discreta de Fourier DFT. Existen distintos métodos para calcular la FFT, en general los podemos dividir en 2 tipos: decimación en el tiempo, y diezmado en la frecuencia. El algoritmo busca reducir el número de multiplicaciones efectuadas en la DFT, reduciendo el número de cálculos para N datos de 2N2 a 2N·log2N, donde N debe ser una potencia de 2.Usualmente la presentación del algoritmo FFT se realiza de forma polinomial pero también puede ser presentado de forma matricial. La FFT explota las simetrías en la matriz W (ec.2.7) para aproximarse a una matriz diagonal. En la actualidad existen algoritmos aun más eficientes de calcular la DFT que inclusive el algoritmo FFT de Cooley y Tukey. No hablaremos del actual algoritmo de la FFT aquí.

2. FUNDAMENTO: 2.1 ANALSÍS DE FOURIER EN TIEMPO DISCRETO:

Una señal discreta será periódica si se cumple: , en donde

N, periodo fundamental, es un entero mínimo. La exponencial compleja es un ejemplo de función periódica discreta.

El análisis de Fourier en tiempo discreto es similar a su análogo en tiempo continuo, pero una de las grandes diferencias que presenta en que las series ahora no presentaran infinitos términos sino que estarán determinados por el número del periodo N.

Una señal periódica puede representarse en términos de exponenciales complejas de la forma:

(2.1)

Esta es la representación de una serie de Fourier de una señal discreta periódica; para hallar el k-ésimo coeficiente ak multipliquemos por ambos miembros en (2.1):

D. L. LL. FIEE-UNI 1

Page 2: algoritmo FFT

-N1 n

-N1

xp[n]

n

x[n]

N2

N2

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Puesto que x[n] es periódica da lo mismo que o . Ahora

tomando sumatoria para :

(*)

Pero veamos que:

Entonces en (*): , luego:

(2.2)

Esta última se llama ecuación de análisis, es aplicable solo a una función periódica para obtener su la serie discreta de Fourier (SDF). Veamos ahora que en analogía a la variable continua nuestros resultados se pueden extender para hallar la SDF de señales de duración finita como se ve en la figura:

(a)

(b)

FIGURA 1: Ahora, sea x[n] una señal aperiódica de duración N podemos construir una señal periódica xp[n] de periodo N tal que:

(**)

Entonces podemos hallar la representación de la SDF de xp[n] sobre

en donde se debe cumplir que ; ahora para

D. L. LL. FIEE-UNI 2

Page 3: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

que xp[n] se acerque mas a x[n] podemos hacer que el periodo sea más grande, es decir que en la figura.1.b los ciclos de xp[n] estarán cada vez más alejados y como , podemos escribir:

(2.3)

Definamos la función , entonces en (2.3) vemos que:

, con , de lo cual llegamos a:

(2.4)

Esta expresión se conoce como la transformada de Fourier en tiempo discreto. A partir de (2.1) se observa que x[n] se puede expresar también como:

(2.5)

Como es periódica podemos coger el intervalo de la sumatoria de 0 a N-1, luego:

(2.6)

2.2 TRANSFORMADA DISCRETA DE FOURIER (DFT): Con el resultado de (2.6) podemos intentar calcular la transformada para un conjunto de N datos, por simplicidad hagamos y

, desarrollando:

Puede ser expresado de forma matricial como:

(2.7)

Equivalente a: , donde W es denominada matriz de Fourier. Un

hecho muy importante y evidente es que W es una matriz simétrica . Ahora veamos algunos casos prácticos en donde se usa la DFT:

2.3 EJEMPLOS DE LA DFT

D. L. LL. FIEE-UNI 3

Page 4: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

a.- Ejecutemos la DFT para el siguiente caso (N=4) por el método ordinario:

Calculando los valores de : nk

0 1 2 3

0 e0·0=1 e0·1=1 e0·2=1 e0·3=11 e1·0=1 -j -1 j2 e2·0=1 -1 1 -13 e3·0=1 j -1 -j

Entonces de la formula (2.7):

(2.8.1)

b.- Veamos ahora el caso para n=8:

Procediendo como en el caso anterior encontramos ahora que:

(2.8.2)

Entonces ejecutando , obtenemos:

k 0 1 2 3 4 5 6 7X(k) 36 -4 -j9.65 -4 -j4 -4 -j1.65 -4 -4+j1.65 -4 +j4 -4+j9.65

(*) OBSERVACIÓN:

D. L. LL. FIEE-UNI

n 0 1 2 3x[n] 1 2 3 4

n 0 1 2 3 4 5 6 7x[n] 1 2 3 4 5 6 7 8

4

Page 5: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Veamos que en la ec. (2.8.1) pudimos haber realizado la siguiente factorización:

Observemos que:

Entonces:

Desarrollando:

Reordenando: (*.1)

Y sea ahora: Y además como el valor de (-1)k solo depende de si k es par o impar,

podemos hacer que: , y

. Entonces para visualizar esto mejor

desarrollemos (*.1) para este caso:

(*.2)

En donde x[0]=1, x[1]=2, x[2]=3, x[3]=4, entonces y , entonces:

(*.3)

Que es el mismo resultado que obtuvimos anteriormente, pero ahora se necesitaron efectuar menos multiplicaciones. La ec. (*.3) nos invita a hacer el siguiente diagrama de desarrollo:

x[0] X par(0) X(0) x[2] X par(1) X(1) x[1] X imp(0) X(2) x[3] X imp(1) X(3) FIGURA 2

D. L. LL. FIEE-UNI 5

Page 6: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

En la ecuación (2.7) y de los ejemplos a y b notamos que el número de multiplicaciones complejas a ejecutar es N2 (sin considerar el hecho que

). El método matricial que hemos visto en la práctica es ejecutado por un

computador; sin embargo cuando N es muy grande como en señales de video y audio digitales y se debe realizar 1012 multiplicaciones aproximadamente, entonces los cálculos resultaran muy tediosos, ocuparían mucha memoria y además tomaran mucho tiempo.

Esto último fue la motivación para desarrollar un método más directo para calcular la DFT, el algoritmo de la transformada rápida de Fourier FFT, el cual acabamos de introducir implícitamente en la observación anterior.

3. DEDUCCIÓN DEL ALGORITMO FFT DE COOLEY – TUKEY:Hay Partamos de la DFT para una señal dada polinomialmente como:

(3.1)

Ahora asumiendo que el número de datos N es par, descomponemos la sumatoria en sus términos pares e impares:

Sea ahora: , donde el nuevo

notemos que podemos hacer que , y

definamos a:

(3.2)

Además veamos que F(k) y G(k) son también periódicas:

Análogamente para G(k); con N/2 como periodo mínimo. Entonces nuestro problema de calcular una DFT para N datos se redujo ahora a calcular 2 DFT para N/2 datos cada una . Nuevamente asumamos que N/2 es par y ahora, para F(k):

Donde ff , gf son lo mismo para f[n] que para x[n].

De igual forma para g[n]:

D. L. LL. FIEE-UNI 6

Page 7: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Es decir que ahora sobre f[n] y g[n] se realizan 4 DFT de longitud N/4. Entonces podríamos hacer múltiples divisiones del intervalo [0,N-1] mientras se pueda dividir N entre 2.

Ahora estamos listos para generalizar el método, entonces:

Sea un vector de datos, de longitud N =2m. Entonces sobre el intervalo [0,N-1] se pueden realizar m particiones como se mostró anteriormente hasta llegar a una DFT de longitud 2 ,esta es la unidad básica del FFT conocida como mariposa (o butterfly en ingles) en donde solo se necesitara una multiplicación y 2 sumas complejas: como se muestra en la figura:

Figura 3: Los elementos computacionales básicos de la transformada rápida de Fourier es la mariposa. Toma dos números complejos, representados por a y b, y forma las cantidades mostradas. Cada mariposa requiere una multiplicación compleja y dos sumas complejas. 3.1 EJEMPLO DEL ALGORITMO FFT Para especificar la idea realicemos nuevamente el ejemplo b, para N=23 por el algoritmo FFT:

Desarrollando: (3.1.1)

Donde se cumple para w:

Agrupando términos pares con impares:

Tomamos: ,luego:

(3.1.2)Pero dentro de cada paréntesis de (3.1.2) podemos realizar una nueva factorización, sabiendo que:

D. L. LL. FIEE-UNI 7

Page 8: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Entonces:

Nuevamente: , luego:

(***)

Remplazando los índices iniciales:

=>

(3.1.3)

Esta es la forma general de se obtiene k-ésimo termino para N=8, además vemos que se deberán ejecutar 4 DFT de longitud 2, y los resultados que se obtengan se usaran para ejecutar 2 DFT de longitud 4, para lo cual se realizo 3 particiones. Para interpretar lo que indica la ec. (3.1.3) veamos la figura 4, donde cada flecha en diagonal representa una suma y las acompañan sus factores multiplicativos:

FIGURA 4

El número total de cálculos que se realizara serán N=8 sumas para cada etapa y log2N=3 etapas, haciendo el número de procesos básicos de (8)(3)=N log2N.

En general se cumple que para la FFT el número de cálculos es: N log2N.

D. L. LL. FIEE-UNI 8

Page 9: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Comparando con la DFT de N2 cálculos. Para cuantificar la diferencia veamos la siguiente tabla para distintos valores de N:

N 2 4 8 16 32 64 128 256 512 1024N2 4 16 64 256 1024 4096 16384 65536 262144 1048576

Nlog2N 2 8 24 64 160 384 896 2048 4608 10240

El número de cálculos es directamente proporcional al tiempo de solución:

FIGURA 5: Esta figura muestra que tan lento crece el tiempo de solución de un proceso de Nlog2N.

Esta diferencia en la rapidez de cálculos de la FFT + computación digital fue completamente responsable de la "explosión" del Procesamiento Digital de Señales DSP en los años 60's. Para terminar hay que mencionar que el algoritmo FFT se encuentra implementado en muchos programas de computación. Veamos las instrucciones que se usan en el MATLAB para el ejecutar el ejemplo a y b:

a.-Para n=22:,x=(1,2,3,4): >> x=1:1:4 x = 1 2 3 4 >> y=fft(x)' y = 10.0000 -2.0000 - 2.0000i -2.0000 -2.0000 + 2.0000i

b.-Para n=23,x=(1,2,3,4,5,6,7,8)

>> x=1:1:8

D. L. LL. FIEE-UNI 9

Page 10: algoritmo FFT

MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

x =

1 2 3 4 5 6 7 8

>> y=fft(x)'y =

36.0000-4.0000 - 9.6569i-4.0000 - 4.0000i-4.0000 - 1.6569i-4.0000-4.0000 + 1.6569i-4.0000 + 4.0000i-4.0000 + 9.6569i

(*) A manera de extensión dejamos adjuntado un artículo donde se muestra la deducción del FFT de forma matricial en los anexos

4. REFERENCIAS BIBLIOGRAFICAS[1] .- Oppenheim, A. V. ; Willsky, A. S.; Nawab, S.H.: SEÑALES Y SISTEMAS: Ed. Prentice Hall: México:1998.Pág.:211 a 213-358 a 361-417 a 420.

[2].-Rojas, V. D.: TRANSFORMADA Z: FIEE-UNI: Lima-Perú. 2001 Pág.: 93 a 105.

Referencias en Internet:Visitar:

Cooley-Tukey FFT algorithm - Wikipedia, the free encyclopedia.htm

Mathworld_wolfram_com-FastFourierTransform.htm Derivando la Transformada Rápida de Fourier.mht Ecuación de Matriz para la DTFS.mht

D. L. LL. FIEE-UNI 10