Está en la página 1de 10

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 x [n ] será periódica si se cumple: x [n ]  x[n  N ] , en donde


2
N, periodo fundamental, es un entero mínimo. La exponencial compleja e  j N n
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:
N2

ae
jk 2N n
x [n ]  k con N2  ( N1 )  N (2.1)
k  N1

Esta es la representación de una serie de Fourier de una señal discreta


2
periódica; para hallar el k-ésimo coeficiente ak multipliquemos por e  jr N n ambos
miembros en (2.1):
N2

ae
 jr 2N n jr 2N n  jk 2N n
e x [n ]  k e
k  N1

D. L. LL. 1 FIEE-UNI
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

Puesto que x[n] es periódica da lo mismo que n  [ N1, N2 o n  [0, N . Ahora


tomando sumatoria para 0  n  N :
N 1 N 1 N 1 N 1 N 1

e x [n ]   ak e   ak  e
 jr 2N n jr 2N n  jk 2N n j ( r  k ) 2N n
e (*)
n 0 n 0 k 0 k 0 n 0

Pero veamos que:


ìï (e j 2Np s )N - 1
N- 1 ïï = 0 ; s ¹ 0, ±N, ±2N,K
åe = ïí e j 2Np s - 1
js 2Np n

n =0
ïï
ïïî N ; s = 0, ±N, ±2N,K
N 1 N 1 N 1

e x [n ]   ak  e
 jr 2N n j ( r  k ) 2N n
Entonces en (*):  ar N , luego:
n 0 k 0 n 0

1 N 1  jk 2N n
ak   e x [n ]
N n 0
(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:

x[n]
(a)

-N1 N2 n

xp[n]
(b)

-N1 N2 n

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:
 x [n ] ; N1  n  N2
x [n ]   p (**)
 0 ; N2  n y n  N1
Entonces podemos hallar la representación de la SDF de xp[n] sobre
N1  n  N2 en donde se debe cumplir que ak  N1  Nn 01e  jk N n x p [n ] ; ahora para
2

D. L. LL. 2 FIEE-UNI
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 x [n ]  0 n fuera de  N1  n  N2 , podemos escribir:
1   jk 2N n
ak   e x [n ]
N n 
(2.3)

Definamos la función X (e )   n  x[ n]e


j   jn
, entonces en (2.3) vemos que:
ak  1
N
X (e jo k ) , con o  2
N , de lo cual llegamos a:

X (e jo k )   x[n]e
n 
 jko n
(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:
1 
x [n ]  
N k 
X (e jo k )e jko n (2.5)

Como X (e jo k ) es periódica podemos coger el intervalo de la sumatoria de 0 a


N-1, luego:
1 N 1 N 1
x [n ]   X (e jo k )e jko n X (e jo k )   x[n ]e  jko n (2.6)
N k 0 n 0

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 X (e jo k )  X (k ) y
 jk 2N n
e jo k  e  w Nkn , desarrollando:

 N 1  j (0) 2N n
X (0)  n 0 e x[n ]  (1  1  K K K  1)

 N 1  j (1) 2N n N 1)


X (1)  n 0 e x [n ]  (w 1·0
N
 w 1·1
N
 K  w 1·(
N
)
M M M
X (N  1)   Nn 01e
 j ( N 1) 2N n
x [n ]  (w (NN 1)0  w (NN 1)1  K  w (NN 1)( N 1) )

Puede ser expresado de forma matricial como:

 X (0)   1 1 L 1   x [0] 
   1 wN (1)(1)
M wN (1)( N 1)   
 X (1)     x [1] 
 (2.7)
 M   M L O M   M 
     
 X (N  1) 
 
( N 1)(1)
1 wN L w (NN 1)( N 1)   x [N  1] 

Equivalente a: X   W  x , 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. 3 FIEE-UNI
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

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

n 0 1 2 3
x[n] 1 2 3 4
 j ( 24 ) kn
Calculando los valores de w Nkn  e  (  j )kn :
n 0 1 2 3
k
0 e0·0=1 e0·1=1 e0·2=1 e0·3=1
1 e1·0=1 -j -1 j
2 e2·0=1 -1 1 -1
3 e3·0=1 j -1 -j

Entonces de la formula (2.7):


1 1 1 1  1  X (0)   10 
 1  j 1 j    
2 
 
X (1)   2  2 j 

     (2.8.1)
 1 1 1 1  3  X (2)   2 
       
 1 j 1  j   4  X (3)  
  2  2 j 

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

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

Procediendo como en el caso anterior encontramos ahora que:

 1 1 1 1 1 1 1 1 
 
 1 2
2
j 2
2
j  2
2
j 2
2
1  22  j 2
2
j 2
2
j 2
2

 1 j 1 j 1 j 1  j
 
 1  22  j 22 j 2
j 2
1 2
j 2
 j  22  j 22 
W  2 2 2 2
 (2.8.2)
 1 1 1 1 1 1 1 1 
 1  2j 2 j 2
j 2
1 2
j 2
j  2 j 2
2 2 
 2 2 2 2 2 2

 1 j 1 j 1 j 1 j 
 2 
 1 2 j 2
2 2
j  2
2
j 2
2
1  2
2
j 2
2
j 2
2
j 2  

Entonces ejecutando W x  X , obtenemos:

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

D. L. LL. 4 FIEE-UNI
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

(*) OBSERVACIÓN:
Veamos que en la ec. (2.8.1) pudimos haber realizado la siguiente
factorización:
 j 2 nk
Observemos que: w 4 nk  e 4  (  j )nk
Entonces: X (k )   n 0 x [n ] w 4
3 nk

Desarrollando: X (k )  x [0]  x [1](  j )k  x [2](  j )2k  x [3](  j )3 k


 x [0]  x [1](  j )k  x [2]( 1)k  x [3]( j )k
Reordenando: X ( k )  ( x[0]  x[2]( 1)k )  ( x[1]  x[3]( 1)k )(  j )k (*.1)
 ( x[2·0]  x [2·1]( 1) )  ( x[2·0  1]  x[2·1  1]( 1) )(  j )k
k k

Y sea ahora: x par [r ]  x [2r ] , xipm [r ]  x[2r  1] ; r  0,1


Y además como el valor de (-1)k solo depende de si k es par o impar,
podemos hacer que: X par (r )  ( x par [0]  x par [1]( 1)r ) , y
X ipm (r )  ( xipm [0]  xipm [1]( 1)r ) . Entonces para visualizar esto mejor
desarrollemos (*.1) para este caso:

X (0)  ( x[0]  x[2](1) )  ( x[1]  x[3](1) )(1)


X (1)  ( x[0]  x[2]( 1))  ( x[1]  x[3]( 1) )(  j )
(*.2)
X (2)  ( x[0]  x[2](1) )  ( x[1]  x[3](1) )( 1)
X (3)  ( x[0]  x[2]( 1) )  ( x[1]  x[3]( 1))( j )

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


X par (0)  4 ; X par (1)  2 y X ipm (0)  6 ; X ipm ( 2) , entonces:
X (0)  X par (0)  X ipm (0)(1)  10
X (1)  X par (1)  X ipm (1)(  j )  2  2 j
(*.3)
X (2)  X par (0)  X ipm (0)( 1)  2
X (3)  X par (1)  X ipm (1)(1)  2  2 j

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. 5 FIEE-UNI
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
w N0  1 ). 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 N  106 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:
N 1
X ( k )   x [ n ] w N k ·n (3.1)
n 0

Ahora asumiendo que el número de datos N es par, descomponemos la


sumatoria en sus términos pares e impares:

N / 2 1 N / 2 1
X (k )  
n 0
x[2n ] w N k ·2 n  n 0
x[2n  1] w N k ·(2n 1)
N / 2 1 N / 2 1
 
n 0
x [2n ] w N k ·2 n  w N k 
n 0
x [2n  1] w N k ·2 n

Sea ahora: x [2n ]  f [n ] y x [2n  1]  g [n ] , donde el nuevo n  [0, N / 2  1]


 j 2N k ·2 n  j N2 / 2 k ·n
notemos que podemos hacer que w N k ·2 n  e e  w N / 2kn , y
definamos a:
N / 2 1 N / 2 1
F (k )  n 0
f [n ] w Nk ·/n2 G( k )   g [n ] w
n 0
k ·n
N /2 (3.2)

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


N / 2 1 N / 2 1

  f [n ] w
 j N2 / 2 ( N / 2)·n
F (k  N / 2)  f [n ] w N( k/2N / 2)·n  N /2
k ·n
e  F (k )
n 0 n 0

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):
N / 2 1 N / 4 1 N / 4 1
F (k )   f [n ] w
n 0
k ·n
N/2   f [2n] w
n 0
k ·2 n
N /2   f [2n  1] w
n 0
k ·(2 n 1)
N /2

N / 2 1 N / 4 1 N / 4 1
  f [n ] w
n 0
k ·n
N /2   f [n ] w
n 0
f
k ·2 n
N /2  w Nk / 2  g [n ] w
n 0
f
k ·2 n
N/2 n  [0, N / 4  1]

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

De igual forma para g[n]:


D. L. LL. 6 FIEE-UNI
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

N / 4 1 N / 4 1
G( k )  
n 0
g [2n ] w Nk ·2/ 2n   g [2n  1] w
n 0
k ·(2 n 1)
N/2

N / 4 1 N / 4 1
  f [n ] w
n 0
g
k ·2 n
N/2  w Nk / 2 
n 0
gf [n ] w Nk ·2/ 2n n  [0, N / 4  1]

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 x 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: X (k )   7n 0 x [n ] w 8 k ·n (3.1.1)
 x[0]w 8 0 k  x[1]w 8 k  x[2]w 8 2k  x[3]w 83 k  x[4]w 8 4 k  x[5]w 85 k  x [6]w 8 6 k  x[7]w 87 k
Donde se cumple para w:
 j 28 2 n ·k  j 24 n ·k
w 8 2 n ·k  e e  w 4 n ·k
 j 2 (2 n 1)·k  j 2  n ·k  j 2 k
w 8(2n 1)·k  e 8  e 4 e 8  w 4 n ·k w 8 k
Agrupando términos pares con impares:
X (k )  ( x [0]w 40 k  x [2]w 4 k  x[4]w 4 2k  x [6]w 43 k )
( x [1]w 40 k  x[3]w 4 k  x [5]w 4 2k  x[7]w 43 k )w 8 k
Tomamos: x [2r ]  f [r ] y x[2r  1]  g [r ] , r  0,1,2,3 ,luego:
X ( k )  (f [0]w 40 k  f [1]w 4 k  f [2]w 4 2k  f [3]w 43 k )
(g [0]w 40 k  g [1]w 4 k  g [2]w 4 2k  g [3]w 43 k )w 8 k (3.1.2)
Pero dentro de cada paréntesis de (3.1.2) podemos realizar una nueva
factorización, sabiendo que:

D. L. LL. 7 FIEE-UNI
MATEMATICAS V TRANSFORMADA RAPIDA DE FOURIER

 j 24 2 n ·k  j 22 n ·k
w 4 2 n ·k  e e  w 2 n ·k
 j 24 (2 n 1)·k  j 22 n ·k  j 24 k
w 4(2n 1)·k  e e e  w 2 n ·k w 4 k
Entonces: 
X ( k )  (f [0]  f [2]w 4 2k )  (f [1]  f [3]w 4 2k )w 4 k 

 ( g [0]  g [2]w 4 )  ( g [1]  g [3]w 4 2k )w 4 k w 8 k
2k

Nuevamente: f [2s ]  ff [s ] y f [2s  1]  fg [s ] , s  0,1 , luego:

X (k )  (ff [0]  ff [1]w 2k )  (fg [0]  fg [1]w 2k )w 4 k 

 ( gf [0]  gf [1]w 2k )  (g g [0]  g g [1]w 2k )w 4 k w 8 k  (***)
Remplazando los índices iniciales:

X ( k )  ( x[0]  x[4]e  j k )  ( x[2]  x[6]e  j k )e
 j 2 k


 ( x [1]  x[5]e  j k )  ( x[3]  x [7]e  j k )e
 j 2 k
e  j 4 k

=> 
X (k )  ( x [0]  x [4]( 1)k )  ( x [2]  x [6]( 1)k )(  j )k 

 ( x[1]  x[5]( 1)k )  ( x[3]  x[7]( 1)k )(  j )k e   j 4 k
(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. 8 FIEE-UNI
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 1024


N2 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. 9 FIEE-UNI
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. 10 FIEE-UNI