Transformada Rápida de Fourier
Transformada Rápida de Fourier
Transformada Rápida de Fourier
) . S
base B a partir del producto de las componentes euclidianas z [ z ]E por la matriz cambio
de base de E a B notada como A . Es decir,
[ z ]B A [ z ]E Az .
N 1
a
n 0
m ,n
500 por 500 pixeles (250000 pixeles) cada uno de los cuales tiene asignado un valor de
intensidad en escala de grises y donde estos valores constituyen un vector de gran longitud.
Para una imagen de video, se pueden tener de 20 a 30 vectores de similar tamao por
segundo. El clculo de las DFT de estos vectores en tiempo real puede llegar a sobrepasar
la capacidad de un hardware computacional lo que hace necesario un algoritmo rpido.
El lema a continuacin es una versin simple de FFT, en la que la longitud N es par. Este
lema exhibe la idea bsica detrs de FFT.
Lema 2.37
Supngase M
, y N 2M . Sea z l 2 (
). Se define u, v l 2 (
mediante
u(k ) z(2k ) para k 0,1,.., M 1, y v(k ) z(2k 1) para k 0,1,.., M 1.
En otras palabras,
u ( z(0), z(2), z(4),..., z(n 4), z( N 2)) y v ( z(1), z(3), z(5),..., z (n 3), z ( N 1)).
N
puntos, esto es, u WM u , y
2
i 2 m
v(m)
(1)
z(m) z( M ) u ( ) e
i 2
N
v( ).
Ntese
que
los
(2)
z(m) z (n)e
i 2 mn
n 0
M 1
z (2k )e
M 1
i 2 m (2 k )
N
k 0
z (2k 1)e
i 2 m (2 k 1)
N
k 0
z(m) u (k )e
k 0
M 1
i 2 m (2 k )
N
v(k )e
k 0
M 1
i 2 m (2 k 1)
N
u (k )e
k 0
i 2 m ( k )
N
M 1
i 2 m (1)
N
v(k )e
k 0
i 2 m ( k )
N
3
M 1
z(m) u (k )e
i 2 m ( k )
i 2 m
M 1
N
k 0
v(k )e
i 2 m ( k )
M 1
i 2 m ( k )
k 0
z(m) u (k )e
i 2 m ( k )
i 2 m
k 0
v(k )e
u (m) e
i 2 m
v(m)
k 0
i 2 m
v(m)
ecuacin (1)
z(m) u (k )e
i 2 m ( k )
i 2 m
M 1
N
k 0
M 1
u (k )e
v(k )e
u (k )e
k 0
i 2 ( M )( k )
M
M 1
i 2 ( M )
N
k 0
M 1
i 2 m ( k )
v(k )e
u (k )e
i 2 ( )( k )
M
e i 2 k e
i 2 ( )
v(k )e
i 2 ( )( k )
M
e i 2 k
M 1
i 2 ( )
N
v(k )e
i 2 ( M )
i 2 ( )( k )
M
pues e
1 , N 2M
k 0
i 2 ( )
z(m) u ( ) e
M 1
i 2 ( M )
N
k 0
i 2 ( )( k )
k 0
u ( ) e
k 0
k 0
M 1
i 2 ( M )( k )
v( )
i 2 ( )
N
v( )
ecuacin (2)
) . Encontrar z
v (1, i, 1, i)
1 i 2 (0) n 4
F0 (n) e
, n 0,1, 2,3
4 F0 (1,1,1,1) u
4
Ntese que,
1 i 2 (1) n 4
F1 (n) e
, n 0,1, 2,3
4 F1 (1, i, 1, i) v
4
z(1) u (1) e
i 2 (1)
v(1) 0 4e
z(2) u (2) e
z(3) u (3) e
i 2 (2)
2 2 2 2i ,
v(2) 0 0 0 ,
i 2 (3)
v(3) 0 0 0
z(5) u (1) e
i 2 (1)
8
z(6) u (2) e
z(7) u (3) e
v(1) 0 4e
i 2 (2)
2 2 2 2i ,
v(2) 0 0 0 ,
v(3) 0 0 0 .
i 2 (3)
u (m)
v(m)
i 2 m
(1)
z(m) u (m) e
i 2 m
z(m M ) u (m) e
v(m)
i 2 m
v(m)
alguna veces se evala cuantos diagramas mariposa son realizados por segundo.
Ntese que los valores usados en la ecuacin (1) son los mismos de la ecuacin (2), es
decir, u (m) y v(m) para 0 m M 1. Para aplicar las ecuaciones (1) y (2), primero se
calculan u y v . Como cada uno de estos vectores son de longitud M
N
, cada uno puede
2
N
productos e
v(m) para m 0,1, 2,.., M 1 . Estos requieren M multiplicaciones
complejas adicionales. El resto consiste de solo sumas y restas de estas cantidades, que no
se cuentan. Por lo tanto, el nmero total de multiplicaciones complejas requerido para
calcular z mediante las ecuaciones (1) y (2) es a lo ms
2
N N 1
2M M 2 ( N 2 N )
2 2
2
2
N2
, mientras que el nmero de
2
multiplicaciones complejas que se requieren para calcular z directamente es N 2 . Por lo
tanto el lema 2.37 recorta nuestro tiempo de clculo casi a la mitad.
Para un N suficientemente grande, esto es esencialmente
N 2( M ) M .
(3)
El caso mas favorable es cuando N es una potencia de 2 como en el lema que sigue.
Lema 2.39 Supngase N 2n para algn n . Entonces
N
1
N log 2 ( N )
2
Es decir, 2k 2k 1 k
2k
N
k log 2 ( N ) puesto que k log 2 ( N ) y N 2k
2
2
entonces para
Como ejemplo, para un vector de longitud 218 262144 , la FFT reduce el nmero de
multiplicaciones complejas necesarias para calcular la DFT
Lema
2.40.
p, q
Supngase
w0 , w1 ,..., wp 1 l 2 (
N pq .
Sea
z l2 (
).
Definir
) mediante
w (k ) z (kp )
vb ( ) e
Entonces para a 0,1,..., p 1 y
, k 0,1,..., q 1.
) mediante
i 2 b
N
w (b) , 0,1,..., p 1.
b 0,1,..., q 1,
z(aq b) vb (a)
(4)
7
N 1
z(aq b) z (n)e
p 1 q 1
i 2 ( aq b ) n
z (kp )e
n 0
i 2 ( aq b )( kp )
pq
0 k 0
Simplificando,
i 2 ( aq b )( kp )
pq
p 1
z(aq b) e
ei 2 ak e
i 2 ( a )
p
i 2 ( a )
i 2 ( bk )
p
q 1
i 2 ( b )
N
i 2 ( b )
q
pq
w ( k )e
i 2 ( a )
i 2 ( bk )
i 2 ( bk )
p
i 2 ( b )
se tiene que
ya que w (k ) z (kp )
k 0
w ( b )
p 1
z(aq b) e
i 2 ( a )
p
p 1
i 2 ( b )
w (b) e
vb ( )
i 2 ( a )
La prueba anterior muestra el principio bsico detrs de la FFT. En el clculo de z(aq b),
para cada valor de a surgen las mismas cantidades vb ( ), 0 p 1 . El algoritmo FFT
reconoce esto y calcula estos valores solo una vez. El clculo directo de z implcitamente
recalcula estos valores intermedios cada vez que ellos aparecen.
Considrese el nmero de multiplicaciones requeridas para el algoritmo en el lema 2.40.
Primero se calculan los vectores w , para 0,1,..., p 1. Cada uno de estos es un vector
de longitud q , por lo tanto para calcular cada w se requieren q multiplicaciones
complejas. As que este paso requiere un total de p( q ) multiplicaciones complejas. El
siguiente paso es multiplicar cada w (b) por e
i 2 ( b )
N
Esto requiere un total de pq multiplicaciones complejas, una para cada una de los q
valores de b y p valores de
(5)
Este estimado se puede usar inductivamente para hacer varios clculos sobre el tiempo
requerido para calcular la FFT (ver los ejercicios 2.3.7 y 2.3.8).
La ventaja de usar la FFT es mayor cuando ms compuesto es N . En muchas aplicaciones
se segmentan flujos de datos en piezas de tamao elegido. En este caso se suele tomar N
como una potencia de 2 y as aplicar el lema 2.39. S no es posible tener la longitud para
aplicar el teorema entonces se rellena con ceros hasta que se tenga una longitud altamente
compuesta.
Aunque las ecuaciones (3) y (5) se pueden usar para calcular el nmero total de
multiplicaciones complejas necesarias para calcular z , stas no muestran como configurar
o desarrollar el clculo completo. Los lemas 2.37 y 2.40 muestran como hacer cada paso
pero no muestran como organizarlos iterativamente.
A continuacin se analiza el algoritmo FFT para mostrar como el clculo puede ser
arreglado. Por simplicidad, nos restringiremos al caso donde N es una potencia de 2, es
decir, N 2n . Entonces se puede expandir cualquier m 0,1,..., N 1 en base 2 en la
forma
m m0 2m1 22 m2 ... 2n1 mn1 ,
) , se denota
Para cualquier k k0 2k1 22 k2 ..., 2n1 kn1 con k0 , k1 ,.., kn1 0,1 ,
N 1
z(k ) z (m)e
i 2 km
m 0
m0 0 m1 0
mn1 0
2n
z (mn 1 , mn 2 ,..., m1 , m0 )e
Ntese que en cada exponente aquellos productos que dan un mltiplo entero de i 2 2n en
el numerador despus de su divisin por 2n el resultado es i 2 en cuyo caso ei 2 1
i 2 ( k0 2 k1 22 k2 ..., 2n1 kn1 )( m0 2 m1 22 m2 ... 2n1 mn1 )
2n
e
i 2 ( k0 2 k1 2 k2 ..., 2
2
e
e
n1
kn1 )(2
n1
mn1 )
2n
2n
i 2 ( k0 )(2n1 mn1 )
i 2 ( k0 2 k1 )(2n2 mn2 )
i 2 ( k0 2 k1 2 2 k2 )(2 n3 mn3 )
2n
2n
2n
i 2 ( k0 2 k1 22 k 2 ..., 2n1 k n1 )( m0 )
2n
i 2 ( k0 2 k1 2 2 k2 ..., 2 n1 kn1 )( m0 )
2n
...
m0 0 m1 0
mn1 0
z (mn 1 ,.., m1 , m0 )e
i 2 ( k0 )(2n1 mn1 )
i 2 ( k0 2 k1 )(2n2 mn2 )
...e
2n
Ntese que la primera suma interna depende de las variables m0 , m1 ,..., mn2 de las sumas
externas y sobre k0 pero no sobre k1 , k2 ,.., kn1. Por tanto, se define
y1 (k0 , mn 2 , mn 3 ,..., m0 )
i 2 ( k0 )(2n1 mn1 )
mn1 0
z (mn 1 , mn 2 ,..., m1 , m0 ) e
2n
i 2 ( k0 )(2n1 )
2n
Calcular y1 (k0 , mn2 , mn3 ,..., m0 ) requiere de solo una multiplicacin compleja para cada
una de las 2n selecciones de k0 , mn2 , mn3 ,..., m0 0,1 , para un total de 2n multiplicaciones complejas que dan todos los 2n valores posibles de y1 . En el siguiente paso, se
define
y2 (k0 , k1 , mn 3 ,..., m0 )
i 2 ( k0 2 k1 )(2n2 mn2 )
mn2 0
y1 (k0 , mn 2 , mn 3 ,..., m0 ) e
2n
i 2 ( k0 2 k1 )(2n1 )
2n
Solo se requiere de una multiplicacin compleja para calcular cada una de las 2n
selecciones de k0 , mn2 , mn3 ,..., m0 0,1 , para un total de 2n multiplicaciones complejas
que dan todos los 2n valores posibles de y2 . Continuando con este proceso, cada vez se
reemplaza el ndice m restante ms alto por el siguiente k ndice. As el esquema realiza la
secuencia de las transformaciones
z (mn 1 , mn 2 ,..., m1 , m0 )
y1 (k0 , mn 2 , mn 3 ,..., m0 ),
y1 (k0 , mn 2 , mn 3 ,..., m0 )
y2 (k0 , k1 , mn 3 ,..., m0 ),
yn 1 (k0 , k1 , k2 ,...kn 2 , m0 )
yn (k0 , k1 , k2 ,...k n 2 , k n 1 )
Por la ecuacin (6), el vector final yn (k0 , k1 , k2 ,...kn2 , kn1 ) es z(k ) . En cada paso se calcula
el siguiente vector y j en todas las 2n posibles escogencias (o elecciones) de su variable.
Por lo tanto cada paso requiere a lo ms 2n multiplicaciones complejas, y como hay un
total de n pasos entonces se tendr a lo ms n2n N log 2 ( N ) multiplicaciones complejas.
Ntese que una vez que el vector y j ha sido calculado, y j 1 ya no es necesario, y por tanto
puede ser descartado. As, en cada etapa los datos previos pueden reemplazarse por nuevos
datos. Esto reduce la cantidad de memoria necesaria al realizarse el clculo.
10
Hay muchas variaciones del algoritmo FFT, algunas veces con ligeras ventajas que el
algoritmo bsico estudiado en esta seccin. El punto clave es que la DFT de un vector de
longitud N 2n puede ser calculado con a lo ms n2n1 ( N ) log 2 ( N ) multiplicaciones
2
complejas a mientras que con clculo directo se requieren N 2 22n multiplicaciones
complejas.
El algoritmo de la transformada rpida de Fourier puede tambin usarse para la calcular
rpidamente la inversa de la DFT mediante
( w)(n) =
1
w ( N n)
N
Si z, w l 2 (
Por la seccin anterior se sabe que todas las transformaciones lineales invariantes por
traslacin definidas sobre l 2 ( N ) pueden verse como un operador de convolucin (teorema
2.19) y donde tambin se afirma la equivalencia con la matrices circulantes. As, el
producto de una matriz N N circulante por un vector de longitud N puede calcularse
usando a lo ms N (3N ) log 2 N , a cambio del producto usual que requiere de N 2
2
multiplicaciones. En otras palabras, cuando T es una transformacin invariante por
traslacin, la DFT no solo diagonaliza T , sino que tambin da una forma prctica y rpida
para calcular T (va FFT). A continuacin una ilustracin grafica que relaciona
N (3N ) log2 N con N 2 .
2
11
12