Transformada rápida de Fourier

La transformada rápida de Fourier, conocida por la abreviatura FFT (del inglés Fast Fourier Transform) es un algoritmo eficiente que permite calcular la transformada de Fourier discreta (DFT) y su inversa. La FFT es de gran importancia en una amplia variedad de aplicaciones, desde el tratamiento digital de señales y filtrado digital en general a la resolución de ecuaciones en derivadas parciales o los algoritmos de multiplicación rápida de grandes enteros. Cuando se habla del tratamiento digital de señales, el algoritmo FFT impone algunas limitaciones en la señal y en el espectro resultante ya que la señal muestreada y que se va a transformar debe consistir de un número de muestras igual a una potencia de dos. La mayoría de los analizadores de FFT permiten la transformación de 512, 1024, 2048 o 4096 muestras. El rango de frecuencias cubierto por el análisis FFT depende de la cantidad de muestras recogidas y de la proporción de muestreo.

La transformada rápida de Fourier es de importancia fundamental en el análisis matemático y ha sido objeto de numerosos estudios. La aparición de un algoritmo eficaz para esta operación fue un hito en la historia de la informática.

Definición 
Sea  una señal aperiódica discreta en el tiempo. La transformada discreta de Fourier (DFT, por sus siglas en inglés) de esta señal se define como:

en la cual  es un conjunto de números complejos. La evaluación directa de esa fórmula requiere operaciones aritméticas, pero con un algoritmo FFT se puede obtener el mismo resultado con solo operaciones. En general, dichos algoritmos dependen de la factorización de n pero, al contrario de lo que frecuentemente se cree, existen FFTs para cualquier n, incluso con n primo.

La idea que permite esta optimización, es la descomposición de la transformada a tratar en otras más simples y éstas a su vez hasta llegar a transformadas de 2 elementos donde k puede tomar los valores 0 y 1. Una vez resueltas las transformadas más simples hay que agruparlas en otras de nivel superior que deben resolverse de nuevo y así sucesivamente hasta llegar al nivel más alto. Al final de este proceso, los resultados obtenidos deben reordenarse.

Dado que la transformada discreta de Fourier inversa es análoga a la transformada discreta de Fourier, con distinto signo en el exponente y un factor 1/N:

cualquier algoritmo FFT puede ser fácilmente adaptado para el cálculo de la transformada inversa discreta de Fourier (conocida por su sigla inglesa, IDFT). Por lo general, tenemos que:

donde el símbolo de asterisco (*) denota la conjugada compleja de la expresión que le antecede.

Algoritmos 

El algoritmo de la transformada de Fourier Rápida (FFT), fue popularizado por los matemáticos estadounidenses James William Cooley y John Wilder Tukey en 1965. Se puede ilustrar mediante el siguiente ejemplo, calculando la FFT de un conjunto de cuatro muestras de datos. Se define el conjunto de muestras de una señal como la señal  en tiempo discreto de forma que los datos de entrada para el algoritmo sean . La DTF de dicha señal es, aplicando la definición:

Se recomienda usar la notación:

Para este caso de 4 puntos de datos, recordando el álgebra lineal, es posible escribir la FFT en forma de matriz como:

puesto que los datos de entrada están representados por un vector-columna de 4 componentes. Efectuar la multiplicación usual de matrices directa requeriría multiplicaciones complejas y adiciones complejas. Por lo tanto, puede escribirse de la siguiente manera:

Debido a que , donde  es un entero, es posible factorizar la matriz en el producto de dos matrices:

Los elementos  y  han cambiado de lugar en el vector que se encuentra del lado izquierdo. Cuando se multipliquen las matrices, los renglones 1 y 2, también se intercambiarán. Después, se calcula el número de multiplicaciones y adiciones que se requieren. Primero, se identifica el resultado de multiplicar la segunda matriz cuadrada por el conjunto de datos de entrada como:

Recordando como se multiplican las matrices, el primer elemento del vector de la izquierda es:

De manera similar, el cálculo de  y requieren de una multiplicación y una adición.Aunque es uno, se hará que  y el producto ya se ha obtenido en el cálculo del primer elemento y puede, en consecuencia, solo almacenarse hasta que se necesite y luego restarse en vez de sumarse. De manera similar, solo requiere una adición más. Hasta ahora se tienen dos multiplicaciones y cuatro sumas. Apelando a condiciones de simetrías similares en la segunda multiplicación de matrices, se encuentra que se requieren dos multiplicaciones y cuatro sumas más. Así, en total, se necesitan cuatro multiplicaciones y ocho adiciones. Puesto que, computacionalmente, las multiplicaciones requieren por lo general mucho más tiempo de cómputo que las adiciones, el algoritmo de FFT para cuatro puntos es alrededor de cuatro veces más rápido que la FDT directa. El siguiente diagrama muestra, en forma de gráfica de flujo de señales, como se realizan las operaciones necesarias.

Algoritmo de diezmado en el tiempo 
Es el algoritmo más famoso para el cálculo de una FFT, diseñado por Cooley y Tukey en 1965. Tomando como entrada una señal discreta x[n] con N muestras, se basa en dividir la señal de entrada en otras dos señales de N/2 muestras (por un lado los coeficientes pares y por otro los impares), y se envían cada una de estas subseñales a una FFT de tamaño N/2 puntos. Cada uno de los coeficientes de salida de la FFT de las muestras impares se multiplica por , donde k es la posición del vector salida, y se suma a las muestras pares. A su vez, las FFT de N/2 puntos se pueden resolver de esta misma manera, realizando esta operación de manera recursiva hasta obtener una FFT de una señal de tamaño 2, cuyo resultado es:

Aplicaciones 
 Tratamiento de imagen (JPEG) y audio (MP3)
 Reducción de ruido en señales, como el ruido blanco
 Análisis en frecuencia de cualquier señal discreta
 Análisis de vibraciones
 Análisis de materiales y estadística
 Síntesis, mediante la transformada inversa IFFT

Referencias

Enlaces externos 
 Algoritmo FFT de Cooley–Tukey en Wikipedia Inglesa.
 
 "The Scientist and Engineer's Guide to Digital Signal Processing": se encuentra numerosa información relacionada con el tema, concretamente en los capítulos 10, 11, 12 y 31.

Transformaciones
Procesamiento de señales