FFT

FFT

Intermedia

Introducción

Transformada de Fourier

La transformada de Fourier aparece con frecuencia en la física y las matemáticas, lo que se traduce en que también tenga muchos usos en la vida cotidiana.

En resumen, la transformada de Fourier toma una señal de entrada, a menudo en el dominio del tiempo o del espacio, y la transforma al dominio de la frecuencia. Y, más concretamente, cuando la señal de entrada está formada por una mezcla (es decir, una superposición) de distintas frecuencias, la transformada separa las frecuencias individuales y muestra sus intensidades relativas.

Esto hace que la transformada sea una herramienta principal en el procesamiento de señales (por ejemplo, filtrado, compresión, etc.) y en muchas aplicaciones de la ciencia de datos. Por lo tanto, quizá se use mucho más de lo que uno imaginaría en un principio, lo que también la convierte en un ejemplo destacado de dónde los números imaginarios se vuelven indispensables, teniendo en cuenta que la salida de la transformada de Fourier es, en general, un número complejo.

Si bien la transformada de Fourier tiene una formulación integral, nosotros somos digitales, así que nos interesa la versión discreta. La deducción de la transformada está fuera del alcance de este ejercicio, pero la transformada discreta directa (hacia el dominio de la frecuencia) tiene la siguiente forma: Xₖ = Σ xₙ * ℯ^(-2iπk * n/N) Aquí, la suma recorre n, y N es el número de muestras, k es la frecuencia, i la unidad imaginaria y xₙ es una muestra individual.

Transformada rápida de Fourier

Aunque es sumamente útil, la transformada de Fourier, implementada de forma ingenua, es un poco lenta (O(n²)). La transformada rápida de Fourier (FFT) es un algoritmo que la acelera drásticamente. Esto se suele lograr con una estrategia de divide y vencerás que aprovecha ciertas simetrías de la formulación y da como resultado una complejidad asintótica de O(Nlog(N)). Esta aceleración mejora enormemente la practicidad y el rango de aplicaciones para las que sirve la transformada.

Instrucciones

Tu amigo es ingeniero de sonido y te ha pedido que le ayudes a programar una transformada de Fourier para un software propietario que está desarrollando. Como quieres hacerlo bien, primero implementarás la transformada discreta de Fourier (DFT) en todo su esplendor ingenuo. Esto se podría usar luego para comprobar que tu objetivo final, la transformada rápida de Fourier (FFT), es correcto.

1. DFT

Implementa la DFT.

Ten en cuenta que esto es de complejidad O(n²) porque obtienes una k por cada recorrido por todos los n, y querrás un vector Xₖ que tenga la misma longitud que el vector de señal Xₙ (para la invertibilidad), así que n veces por n puntos es O(n²).

2. FFT

Implementa la FFT.

Note

Hay muchos recursos para encontrar más detalles sobre las particularidades de este algoritmo, así que no dudes en investigar un poco.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Julia Exercism

¿Todo listo para empezar FFT?

Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.