Lo que el FFT realmente te muestra
Cada sonido que escuchas es una suma de ondas sineosas. El Fast Fourier Transform descompone esa suma. Esto es lo que significa, cómo funciona, y por qué un algoritmo de 60 años sigue en todas partes.
La cuestión
Juega un acorde en un piano — digamos, C y E juntos. Tu oído escucha un sonido. Pero ese sonido es dos frecuencias superpuestas: 261.6 Hz y 329.6 Hz. Su cochlea los separa físicamente — diferentes células del cabello resonan a diferentes frecuencias, enviando señales distintas a su cerebro.
El Fast Fourier Transform hace lo mismo, pero con números en lugar de células del pelo. Dale una señal (una secuencia de muestras de amplitud con el tiempo) y devuelve una lista de frecuencias y sus fortalezas. Responde: ¿qué frecuencias están presentes, y cuánto de cada uno?
¿Qué pasa en realidad
Una señal muestrada con el tiempo es una lista de números: la amplitud en cada punto de muestra. Una grabación de 1 segundo a 44,100 Hz es de 44,100 números. Estos números describen la señal en el dominio time — amplitud como función del tiempo.
El FFT convierte esto en el dominio frecuencia — amplitud como función de frecuencia. La misma información, representación diferente. Como cambiar entre coordenadas cartesianas y polares: nada se crea o destruye, sólo se reexpresa.
El núcleo matemático: cada señal periódica puede ser escrita como una suma de las ondas sine y cosine a diferentes frecuencias. Este es el teorema de Fourier (1807). El FFT calcula los coeficientes de esa suma — cuánto de cada frecuencia está en la señal.
Por qué "Fast"
La forma ingenua de computar una transformación Fourier requiere Operaciones N2 para muestras N. Para 1024 muestras, son alrededor de 1 millón de operaciones. El algoritmo Cooley-Tukey (1965) reduce esto a N·log2(N) — alrededor de 10.000 operaciones para la misma entrada. Una velocidad de 100x. Para un millón de muestras, la velocidad es de 50.000x.
El truco: dividir el punto N se transforma en dos transformaciones N/2 punto, recursivamente. Esto requiere que la N sea un poder de 2 (o almohadillas con ceros). Cada división es el problema. La operación "butterfly" combina las mitades:
X[k] = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]
Donde W es un exponencial complejo (una rotación en el plano complejo). Los mismos dos sub-resultos le dan dos puntos de salida. Por eso el algoritmo es "rápido" — reutiliza cada computación dos veces.
La implementación de PinePaper es un libro de texto Cooley-Tukey radix-2 DIT (dedicación en el tiempo). 40 líneas de JavaScript. Lo escribimos desde cero en lugar de importar una biblioteca porque queríamos que los estudiantes pudieran leer la fuente y entender cada línea.
Lo que significan esos bares
Cuando usted ve un analizador de espectro — barras saltando a la música— cada barra representa un cubo de frecuencia. La altura es la magnitud (fortaleza) de esa frecuencia en la señal actual.
- Una ola de seno pura produce una barra alta a su frecuencia y nada más.
- Una onda cuadrada produce barras en lo fundamental y cada armónico extraño (3a, 5a, 7a...), disminuyendo como 1/n. Es por eso que las ondas cuadradas suenan "buzzy" — contienen energía de alta frecuencia que los pecados puros no.
- El ruido blanco produce barras de altura aproximadamente igual en todas partes. Cada frecuencia está presente con igual probabilidad.
- Una voz humana produce una voz fundamental (el tono que escuchas) más formantes — picos resonantes de la forma de tu tracto vocal que distinguen las vocales.
Windowing: Why the Edges Matter
Hay una trampa. El FFT asume que la señal repite para siempre. Pero nuestra muestra es finita — comienza y se detiene. Si la señal no sucede estar en cero en ambos puntos finales, el corte abrupto crea contenido artificial de alta frecuencia. Esto se llama filtración espectro**.
La solución: multiplicar la señal por una función ventana que pulsa suavemente a cero en los bordes. Ventanas comunes:
- Hann (muñeca blanca): buen propósito general, pierde cierta resolución de frecuencia
- Hamming: similar a Hann pero no alcanza cero en los bordes, ligeramente mejor la supresión de sidelobe
- Blackman: el lóbulo principal más estrecho, una mejor supresión del sidelobe, pierde más resolución de frecuencia
La elección es siempre un intercambio entre la resolución de frecuencia (cómo se puede identificar una frecuencia) y fuga espectral (cuánta energía sangra en los contenedores vecinos). No hay una ventana perfecta. Esto es una consecuencia del principio de incertidumbre — no puede tener conocimiento arbitrariomente preciso de tiempo y frecuencia simultáneamente.
Donde vive el FFT
Usted interactúa con los resultados de FFT constantemente:
- MP3 y compresión AAC: transformar el audio en el dominio de frecuencias, descarte frecuencias por debajo del umbral auditivo, comprime lo que queda. La transformación es la base completa de la compresión de audio perdida.
- La compresión JPEG: la versión 2D (DCT) transforma bloques de 8×8 pixel a dominio de frecuencia, cuantifica componentes de alta frecuencia. Por eso los artefactos JPEG aparecen como bloques.
- WiFi y 5G: La codificación OFDM divide datos en muchos subcarriers de frecuencia. El FFT convierte entre la transmisión de tiempo-dominio y los símbolos de datos de dominio de frecuencia.
- MRI imaging: la señal cruda de un escáner MRI está en espacio de frecuencia. El FFT inverso reconstruye la imagen espacial. Literalmente: cada resonancia magnética que hayas visto es una inversa transformación Fourier.
- Shazam: compute el espectrograma (FFT sobre las ventanas correderas), extractos picos, coincide con el patrón en una base de datos. El FFT es el primer paso en reconocer cada canción.
Un algoritmo de 60 años, en tu bolsillo, corriendo miles de millones de veces al día.
{{widget:function-plot}
Pruébalo
Abra PinePaper, seleccione el generador Spectrum Analyzer. Genera una onda cuadrada. Mira las barras, verás que los armónicos extraños caen como 1/n. Cambia a una sierra — ahora todos los armónicos están presentes, cayendo como 1/n. Cambiar al ruido — espectro plano, cada frecuencia igualmente probable.
Cambiar la función de la ventana. Mira cómo Hann suaviza el espectro al costo de picos más amplios. Cambia a Blackman — picos más estrechos pero bajos sidelobes.
No estás leyendo sobre el FFT. Estás midiendo señales y observando lo que la transformación revela. Esa es la diferencia entre saber y entender.
Referencias
- Brigham, E.O. (1988). La rápida transformación de Fourier y sus aplicaciones. Prentice Hall.
- Cooley, J.W. " Tukey, J.W. (1965). Un Algoritmo para la Calculación de Máquinas de Serie Fourier Complejo. * Matemáticas de la computación*, 19(90), 297-301.
- Fourier, J. (1822). Théorie analytique de la chaleur. Paris: Firmin Didot.
- Harris, F.J. (1978). En el uso de Windows para el análisis armónico con la Transformación de Fourier Discreta. Proceedings of the IEEE, 66(1), 51-83.
- Oppenheim, A.V. " Schafer, R.W. (2009). Procesamiento de señales de tiempo descreto (3a edición). Prentice Hall.
- Shannon, C.E. (1949). Comunicación en la presencia de Noise. Proceedings of the IRE, 37(1), 10-21.
- Smith, S.W. (1997). La Guía del Científico e Ingeniero para Procesamiento de Señal Digital. California Technical Publishing.
- Wang, A., et al. (2003). Un algoritmo de búsqueda de audio industrial-fuerte. Proceedings of ISMIR 2003. (Su algoritmo de huella de audio de Shazam)
- Wallace, G.K. (1991) El estándar de compresión de imágenes JPEG. Communicaciones de la ACM, 34(4), 30-44.
PinePaper's FFT es una aplicación de radio Cooley-Tukey-2 con ventana Hann, Hamming y Blackman, además de filtros de baja velocidad y alto paso. Pruébalo gratis en pinepaper.studio/editor.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor