Transformadas de Fourier Rápidas en 1D y 2D




Note: This page is in Spanish only, for now. It will be translated soon.

La Transformada de Fourier de una función puede ser calculada numéricamente. La función en este caso es una serie de datos con parte real y compleja. La Transformada de Fourier de datos discretos recibe el nombre de Transformada Discreta de Fourier (DFT).


Este proceso requiere del orden de 2N2 operaciones. Existe una manera más eficiente, cuando la serie de datos tiene N elementos, donde N es una potencia de 2 (2, 4, 1024, etc) llamada Transformada Rápida de Fourier. La ventaja que ofrece es que sólo requiere 2Nlog(N) operaciones, y esto es una diferencia gigante en términos prácticos.


Es posible realizar la Transformada de Fourier en más de una dimensión. En el caso de dos dimensiones, se puede mostrar que la Transformada de Fourier en 2D de la imagen de una pantalla (opaco = negro, transparente = blanco) es la difracción a campo lejano o de Fraunhofer de la pantalla (el opuesto es la difracción de campo cercano, o de Fresnel -- pronto habrá un ejemplo de PNGwriter usado para este otro tipo de difracción).


Esto quiere decir que la familiar imagen de interferencia producida en una pantalla al hacer incidir un haz de laser sobre dos rendijas angostas y juntas podrá ser calculado aplicándole una FT a la imagen de las rendijas, con la convención de color antes mencionada.


El código fuente que genera estas imágenes es demasiado extenso para colocarlo aqui. Puedes conseguirlo aquí. Tiene muchos comentarios y explicaciones, pero en inglés.


La subrutina fullfourier() fue obtenida gracias a Numerical Recipes in C, y se le atribuye a un tal M. Brenner. El resto del código es completamente trabajo mío.


A continuación se muestran algunas de las imágenes disponibles. Las demás se pueden ver aquí. Nota: Les subí el brightness para que se vieran mejor en pantallas de PC (gamma = 2.2).



ƒ(x)
F(w)
ƒ(x) = 10*sin(w*x)
       + 9*sin(w*x*2)
       + 8*sin(w*x*3)
       + 7*sin(w*x*4)
       + 6*sin(w*x*5)
       + 5*sin(w*x*6)
       + 4*sin(w*x*7)
       + 3*sin(w*x*8)
       + 2*sin(w*x*9)
       + sin(w*x*10)






10 señales, decrecientes linealmente en
intensidad y crecientes linealmente en frecuencia.
An image.
Cada señal es un peak. (FFT en 1D).
An image.
Un hoyo cuadrado.
An image.
Su transformada.
An image.
Dos ranuras.
An image.
Su transformada.



Estas son algunas imagenes y sus FFT. El color representa la amplitud: desde rojo = 0 hasta lo mas intenso. La raya vertical color fucsia en las FFT es un error mio que todavia no soluciono.

ƒ(x)
F(w)
Valid HTML 4.01! Valid CSS!


© 2002, 2003, 2004, 2005, 2006, 2007 Paul Blackburn