La PizarraMatemática.

Matemáticas para ingeniería

Transformada discreta de Fourier y FFT

Tenemos un bloque de muestras y queremos expresar la misma información como una mezcla de oscilaciones. La DFT hace ese cambio de coordenadas sin perder datos. La FFT organiza el cálculo para repetir menos operaciones. Empezaremos con cuatro giros y una lista corta; después conectaremos los índices con frecuencias y veremos qué puede y qué no puede contar una medición finita.

1. Un bloque de N datos se describe con N coordenadas espectrales

Fijamos N entero positivo y las muestras x[0],…, x[N−1], reales o complejas. La DFT cambia de base en ese espacio de dimensión N; no adivina muestras fuera del bloque. La nueva base usa oscilaciones que completan un número entero de vueltas en N posiciones. Un coeficiente indica cuánto aporta una dirección y con qué fase.

El signo negativo de la DFT elige el sentido del giro
Cuatro pasos para una vuelta1−1i−iW₄=exp(−2πi/4)=−i1, −i, −1, i; después 1.La suma de estos cuatro es 0.
Las potencias de W₄ son uno, menos i, menos uno e i. Cada multiplicación gira un cuarto de vuelta en sentido horario. Al completar cuatro pasos volvemos al uno; al sumarlos se cancelan las partes real e imaginaria. La raíz uno repetida, en cambio, suma cuatro.
Escribimos W_N=exp(−2πi/N).

Su módulo es uno: multiplica girando, sin aumentar por sí mismo el módulo de una muestra.

Con N=4, sus potencias son 1,−i,−1, i.

La cancelación de esos giros separa oscilaciones distintas. Los signos real e imaginario forman parte de los datos, no son errores que haya que eliminar antes de mirar el resultado.

Seguir cuatro giros sin introducir todavía una lista

N=4, W₄=−i.

  1. Potencias

    W₄⁰=1; W₄¹=−i; W₄²=−1; W₄³=i.
  2. Cerrar la vuelta

    W₄⁴=1, porque multiplicar una vez más completa el giro.

  3. Cancelar

    1−i−1+i=0.

    En cambio, si tomamos siempre el giro de frecuencia cero, sumamos 1+1+1+1=4.

Resultado

La suma distingue una dirección constante de una que gira una vuelta completa.

Lo comprobamos

La suma es finita; no depende de un criterio de convergencia de series infinitas.

Una oscilación compleja coincide exactamente con una dirección

x=[1; i;−1;−i], cuatro muestras.

  1. Reconocer el giro de la señal

    x[n]=exp(2πin/4), una vuelta de signo positivo en el bloque.

  2. Comparar con frecuencia uno

    Al multiplicar por exp(−2πin/4), cada producto vale uno. Su suma es cuatro.

  3. Otras direcciones

    En las otras tres comparaciones queda una vuelta no constante cuyas cuatro contribuciones se cancelan. La DFT será [0;4;0;0].

Resultado

Una sola dirección espectral puede describir los cuatro datos.

Lo comprobamos

La lista compleja no tiene por qué presentar la simetría conjugada de los datos reales.

2. La suma directa y la inversa tienen signos y factores emparejados

Usaremos X[k]=Σₙ₌₀ᴺ⁻¹x[n]exp(−2πikn/N), para k=0,…, N−1.
La inversa es x[n]=(1/N)Σₖ₌₀ᴺ⁻¹X[k]exp(2πikn/N).

La directa no divide entre N; la inversa sí. Una convención distinta puede repartir los factores, pero hay que cambiar ambas fórmulas de forma compatible.

X[0] es la suma de las muestras, porque todos sus pesos son uno. La media es X[0]/N. Para cada otro k, escribimos primero sus pesos y después multiplicamos cada muestra por su peso antes de sumar. Esto evita confundir el signo del giro con el signo de la muestra.

Calcular toda una DFT de cuatro muestras

x=[2;0;−1;1], N=4.

  1. Cero y dos

    X[0]=2+0−1+1=2.
    Los pesos de k=2 son [1;−1;1;−1], así X[2]=2−1−1=0.
  2. Uno

    Los pesos son [1;−i;−1; i].

    Entonces X[1]=2+0+1+i=3+i.
  3. Tres

    Los pesos son [1; i;−1;−i].

    Entonces X[3]=3−i.
    La media temporal es 2/4=1/2.
Resultado

X=[2;3+i;0;3−i].

Lo comprobamos

La suma de las muestras es dos, pero ninguna obligación hace que cada muestra sea su media.

Reconstruir una entrada concreta para comprobar la normalización

Usar X=[2;3+i;0;3−i] y recuperar x[1].

  1. Pesos de la inversa

    Para n=1 son [1; i;−1;−i], con signo positivo en el exponencial.

  2. Sumar

    2+i(3+i)−i(3−i)=2+(−1+3i)+(−1−3i)=0.
  3. Dividir

    x[1]=0/4=0, como en el dato original.

    Para n=0, sumar todos los coeficientes da ocho y dividir entre cuatro recupera x[0]=2.

Resultado

La inversa usa la fase completa y el divisor N.

Lo comprobamos

Usar solo |X| cambiaría el problema y no reconstruiría en general estas muestras.

3. La inversa funciona porque las raíces se cancelan salvo en un índice

Al sustituir la directa en la inversa aparece Σₖ₌₀ᴺ⁻¹exp(2πik(n−m)/N). Si n=m módulo N, cada término vale uno y la suma es N. Si no, es una geométrica finita de razón q≠1 con qᴺ=1: su suma (1−qᴺ)/(1−q) es cero. Aquí |q|=1 no causa un problema porque la suma es finita.

Así solo sobrevive x[m] con m=n dentro del bloque, multiplicada por N. El factor 1/N la recupera. La demostración sirve para cualquier vector de N datos. Si prolongamos la fórmula de reconstrucción a otros índices enteros, repite cada N muestras: esa es la extensión periódica de la representación, no una prueba de que el fenómeno medido se repitiera físicamente.

Comprobar dos casos de la suma de raíces

N=4; comparar diferencias n−m=1 y n−m=0.

  1. Índices diferentes

    Para diferencia uno, los términos son 1, i,−1,−i, que suman cero.

  2. Mismo índice

    Para diferencia cero, los cuatro exponentes son cero: la suma es cuatro.

  3. Resultado en la inversa

    Al dividir entre cuatro, la primera comparación no aporta nada y la segunda deja exactamente la muestra buscada.

Resultado

La cancelación actúa como selector de coordenada.

Lo comprobamos

Si n−m=4 también suma cuatro: los índices se entienden módulo cuatro.

Una muestra desplazada permite ver la fase de la reconstrucción

x=[0;1;0;0], N=4.

  1. Directa

    Solo contribuye n=1, así X[k]=W₄ᵏ: [1;−i;−1; i].
  2. Recuperar posición uno

    Los pesos inversos [1; i;−1;−i] multiplican cada coeficiente para dar cuatro unos: x[1]=4/4=1.

  3. Recuperar cero

    La suma de los cuatro coeficientes es cero, así x[0]=0. Las otras posiciones se anulan por la misma ortogonalidad.

Resultado

La fase sitúa el impulso en su posición exacta.

Lo comprobamos

Todos los módulos espectrales son uno, igual que para un impulso en cero, pero sus fases son diferentes.

4. Un índice se convierte en hercios solo después de fijar el muestreo

Si la frecuencia de muestreo es fₛ, el índice k representa kfₛ/N Hz. Frecuencias separadas por fₛ generan las mismas muestras, así los índices altos suelen mostrarse como (k−N)fₛ/N.

Si N es par, k=N/2 es Nyquist, equivalente a su negativa.

Esto describe las coordenadas del bloque; evitar aliasing en la señal continua requiere hipótesis de muestreo adicionales.

Para datos reales, X[N−k]=conj(X[k]) con índices módulo N. Cero y Nyquist, si existe, son reales. Un coseno real de amplitud A situado exactamente en un índice interior reparte amplitud entre dos coeficientes de módulo NA/2. Para mostrar amplitud unilateral se usa 2|X[k]|/N solo en esas frecuencias interiores; cero y Nyquist no se duplican.

Leer frecuencias positivas y negativas de la misma rejilla

N=8, fₛ=80 Hz.

  1. Separación

    Δf=80/8=10 Hz.
  2. Índices

    k=1 representa diez Hz; k=3, treinta; k=6 se puede leer como (6−8)·10=−20 Hz.

  3. Nyquist

    k=4 representa cuarenta Hz, equivalente en las muestras a menos cuarenta. No hay dos casillas independientes para esas dos etiquetas.

Resultado

La unidad Hz necesita conocer fₛ, además de N y k.

Lo comprobamos

Los índices son enteros sin unidad; diez Hz no significa diez muestras.

Recuperar amplitudes sin duplicar las excepciones

x[n]=2+3cos(2πn/8+π/3)+(1/2)(−1)ⁿ, n=0,…,7.

  1. Constante y Nyquist

    X[0]=16, así la media es dos.
    X[4]=4, así la amplitud de la alternancia es 4/8=1/2.
  2. Coseno interior

    X[1]=12exp(iπ/3) y X[7]=12exp(−iπ/3).
    La amplitud es 2·12/8=3.
  3. Fase

    La fase positiva π/3 del coeficiente uno coincide con la fase del coseno usado. Los demás coeficientes son cero.

Resultado

La regla de duplicar se aplica al par interior, no a todas las casillas.

Lo comprobamos

Duplicar DC daría cuatro en lugar de la media dos; duplicar Nyquist daría uno en lugar de un medio.

5. La FFT separa pares e impares y reutiliza una suma y una resta

Para N par, separamos x[2m] y x[2m+1]. Sus DFT de longitud N/2 son E[k] y O[k].

Al sustituir en la definición, X[k]=E[k]+W_NᵏO[k] y X[k+N/2]=E[k]−W_NᵏO[k], para 0≤k<N/2.

La misma multiplicación sirve para las dos salidas: es la mariposa.

Una mariposa reutiliza el producto para sumar y restar
DFT de [2;0;−1;1]Pares: [2;−1]Impares: [0;1]E=[1;3]O=[1;−1]k=0: W₄⁰O[0]=1X[0]=1+1=2X[2]=1−1=0k=1: W₄¹O[1]=iX[1]=3+iX[3]=3−iMismo resultado; menos repetición.
Las muestras pares forman la DFT E=[1,3] y las impares O=[1,−1]. Para cada k de la primera mitad, un mismo producto W₄ᵏO[k] aporta con signo más a X[k] y con signo menos a X[k+2]. Se obtiene [2,3+i,0,3−i].

Si N es potencia de dos repetimos la separación hasta bloques de un dato. La FFT no define un espectro diferente: calcula exactamente la DFT de antes en aritmética exacta. Existen otras descomposiciones para otros tamaños; no tener potencia de dos no hace que la DFT deje de existir.

Rehacer la DFT corta con dos DFT aún más pequeñas

x=[2;0;−1;1].

  1. Separar

    Las posiciones pares dan [2;−1], con E=[1;3].
    Las impares dan [0;1], con O=[1;−1].
  2. Primera pareja

    Para k=0, W₄⁰O[0]=1.
    Entonces X[0]=1+1=2 y X[2]=1−1=0.
  3. Segunda pareja

    Para k=1, W₄O[1]=(−i)(−1)=i.
    Entonces X[1]=3+i y X[3]=3−i.
Resultado

La FFT coincide con los cuatro cálculos directos.

Lo comprobamos

Omitir el factor W₄ habría perdido la parte imaginaria de la segunda pareja.

Una lista constante también encaja en la descomposición

Ocho muestras iguales a uno.

  1. Dos mitades

    Pares e impares son sendas listas de cuatro unos. Ambas tienen DFT [4;0;0;0].

  2. Combinar k=0

    X[0]=4+4=8 y X[4]=4−4=0.
  3. Resto

    Los demás productos combinan ceros y todas sus salidas son cero. Se obtiene [8;0;0;0;0;0;0;0].

Resultado

La dirección constante concentra la información en el índice cero.

Lo comprobamos

La amplitud original es X[0]/8=1, no ocho.

6. El ahorro viene de repetir menos trabajo, no de cambiar la definición

La suma directa usa N contribuciones para cada una de N salidas: orden N². En radix dos hay log₂N niveles con N/2 mariposas por nivel, así el orden es Nlog₂N. Una mariposa contiene operaciones complejas; contar mariposas no equivale a contar exactamente instrucciones de una máquina.

En un ordenador, las rutas de cálculo pueden acumular redondeo de maneras distintas. Un resultado muy pequeño cercano a cero se compara con una tolerancia ligada a escala y precisión; tampoco se borra sin criterio cualquier coeficiente pequeño que pudiera ser una señal real. La factorización de N, memoria y biblioteca influyen en tiempo real.

Comparar tamaños de trabajo sin mezclar sus unidades

N=1024=2¹⁰.

  1. Directa

    Hay 1024²=1048576 contribuciones antes de simplificaciones.
  2. Radix dos

    Hay diez niveles y 512 mariposas en cada nivel: 5120 mariposas.

  3. Alcance

    El ahorro asintótico es claro, pero no se afirma que una contribución directa cueste lo mismo que una mariposa ni que ese cociente sea la aceleración exacta.

Resultado

La estructura explica por qué procesar bloques grandes se vuelve viable.

Lo comprobamos

Optimizar factores triviales puede reducir aún más algunas operaciones concretas.

Una diferencia de redondeo se evalúa con escala

Una DFT teóricamente tiene coeficiente cero; el cálculo devuelve 3·10⁻¹⁴ con entradas de tamaño uno.

  1. Error absoluto

    La distancia al cero esperado es 3·10⁻¹⁴; el error relativo respecto a cero no está definido.

  2. Comparar contexto

    Una tolerancia absoluta elegida con la escala y precisión puede reconocer ese residuo. Si las entradas fueran de escala 10⁻¹⁵, borrar 3·10⁻¹⁴ ya exigiría otra revisión.

  3. Comprobar conjunto

    Se contrasta también reconstrucción y energía, sin convertir una tolerancia local en una prueba de que el muestreo físico era correcto.

Resultado

Precisión numérica y contenido de la señal se juzgan con sus escalas.

Lo comprobamos

La FFT y la directa pueden diferir unas últimas cifras sin representar transformaciones matemáticas distintas.

7. Una rejilla más fina no crea una observación más larga

El espaciado Δf=fₛ/N indica las frecuencias donde se evalúa el espectro del bloque. Observar más muestras al mismo fₛ alarga el registro y puede aportar información para separar tonos. Añadir ceros al bloque existente evalúa su espectro en más puntos, pero no mide nueva señal: no mejora por sí solo la capacidad física de distinguir dos frecuencias cercanas.

La fuga reparte una oscilación entre varios coeficientes
Un bloque de 16 muestras3 vueltas: tono en la rejilla0246813,5 vueltas: fuga espectral024681Índice k de la DFTLa ventana cambia lo que vemos.
Se comparan dos cosenos reales, de tres y tres y media vueltas en dieciséis muestras. Se muestran magnitudes unilaterales 2|X[k]|/16 para índices interiores, sin duplicar cero ni Nyquist. El primer coseno concentra su amplitud en k=3; el segundo reparte contribuciones en varios índices. La rejilla y el número de muestras son los mismos.

Si una oscilación no completa vueltas enteras en el bloque, sus extremos no encajan al repetir la representación y suele repartir energía entre varios índices: fuga espectral. Las ventanas cambian ese reparto, las anchuras y las amplitudes. Suavizar extremos tiene un coste y requiere correcciones adecuadas si queremos estimar amplitudes; la DFT sigue siendo exacta para el vector que recibe.

Medio ciclo extra reparte un tono entre varias casillas

N=4, x[n]=cos(3πn/4): una vuelta y media dentro de la longitud del bloque.

  1. Muestras

    x=[1;−√2/2;0;√2/2].
  2. Transformada

    Con los pesos de cuatro puntos obtenemos X[0]=1, X[1]=1+√2i, X[2]=1 y X[3]=1−√2i.

  3. Interpretar

    El tono no corresponde a un único índice entero del bloque. No es un fallo de la suma: estos son exactamente los coeficientes del vector dado.

Resultado

Los coeficientes describen el bloque, mientras inferir el tono continuo exige contexto.

Lo comprobamos

Su energía temporal dos coincide con (1+3+1+3)/4=2.

Rellenar con ceros no significa haber medido cuatro muestras más

x=[1;0;−1;0], fₛ=8 Hz.

  1. Cuatro datos

    Su DFT es [0;2;0;2], con separación dos Hz.

  2. Ocho posiciones rellenadas

    Añadimos cuatro ceros. La nueva DFT cumple X₈[k]=1−exp(−iπk/2), evaluada con separación un Hz.

  3. Qué no cambió

    Seguimos teniendo solo cuatro observaciones. Continuar midiendo el coseno habría podido dar [1;0;−1;0;1;0;−1;0], un vector diferente del relleno.

Resultado

La rejilla se hizo más densa; el registro medido no se alargó.

Lo comprobamos

El relleno también tiene otra utilidad distinta: evitar plegado al calcular una convolución lineal.

8. Multiplicar DFT calcula convolución circular hasta que el relleno evita el plegado

La inversa del producto X[k]H[k] de dos DFT de longitud N es y[n]=Σₘ₌₀ᴺ⁻¹x[m]h[(n−m) mod N]. La resta de índices vuelve al bloque por el módulo. Si queríamos convolución lineal, sus posiciones más allá del bloque se añadirán a otras, no desaparecerán.

Para listas de longitudes L y M, el último índice lineal posible es L+M−2, así hacen falta al menos L+M−1 casillas. Rellenar ambas entradas hasta una longitud N suficiente permite usar la multiplicación espectral sin solapamiento circular. Ese límite es independiente de que N sea potencia de dos.

Una salida no nula puede plegarse hasta dar todo cero

x=[1;1], h=[1;−1].

  1. Lineal

    La salida completa es [1;0;−1].

  2. DFT de longitud dos

    X=[2;0] y H=[0;2].

    El producto es [0;0] y su inversa [0;0].

  3. Explicar

    El −1 de la posición dos se sumó al uno de la posición cero. Es la convolución circular de dos casillas, distinta de la lineal.

Resultado

No había un error de multiplicación; se había elegido otra operación por la longitud.

Lo comprobamos

La suma total cero se conserva en ambos resultados y no detecta por sí sola este fallo de intención.

Usar espacio suficiente recupera cada posición

x=[2;1;−1], h=[1;2].

  1. Longitud necesaria

    L+M−1=3+2−1=4.
  2. Rellenar

    Usamos [2;1;−1;0] y [1;2;0;0]. Multiplicar sus DFT de cuatro puntos e invertir da [2;5;1;−2].

  3. Comparar con tres

    Con longitud tres se obtendría [0;5;1], porque la posición tres se añade a cero. El relleno cuatro evita esa suma de posiciones distintas.

Resultado

La DFT puede calcular convolución lineal si el bloque se dimensiona para ello.

Lo comprobamos

La suma final seis coincide con (2+1−1)(1+2), pero se revisan también todos los índices.

9. Media, energía, fase e inversa comprueban aspectos diferentes

Con esta convención, Parseval es Σ|x[n]|²=(1/N)Σ|X[k]|².

Se demuestra usando la misma ortogonalidad que la inversa. La media X[0]/N, la simetría conjugada para datos reales y la reconstrucción completa aportan controles adicionales. Una comprobación de módulos no detecta todos los errores de fase.

Estas pruebas verifican que representamos bien el vector entregado. No demuestran que la medición evitara aliasing ni que una ventana corta separe cualquier par de tonos. Antes de interpretar un gráfico se conservan frecuencia de muestreo, cantidad de datos realmente medidos, ventana, relleno, unidades y normalización.

Cerrar el ejemplo con energía y media

x=[2;0;−1;1], X=[2;3+i;0;3−i].

  1. Tiempo

    La energía es 2²+0²+(−1)²+1²=6; la media es (2+0−1+1)/4=1/2.
  2. Frecuencia

    Los módulos al cuadrado son 4,10,0,10.

    Su suma dividida entre cuatro da 24/4=6.
  3. Otros controles

    X[3]=conj(X[1]) y X[0]/4=1/2; además la inversa recuperó las muestras. Los controles son compatibles.

Resultado

La energía detecta factores N perdidos sin ignorar la fase en los otros controles.

Lo comprobamos

La energía seis no equivale a la suma con signo dos.

Dos impulsos pasan el mismo control de módulo, pero no de posición

Comparar [1;0;0;0] con [0;1;0;0].

  1. Primer espectro

    El impulso en cero tiene X=[1;1;1;1].
  2. Segundo espectro

    El impulso en uno tiene X=[1;−i;−1; i].

    Todos sus módulos también valen uno y ambas energías temporales son uno.

  3. Control decisivo

    Las inversas recuperan posiciones distintas porque usan las fases. Intercambiar los espectros conserva módulos y energía, pero cambia el dato.

Resultado

El espectro completo es más información que su magnitud dibujada.

Lo comprobamos

La igualdad de magnitudes no autoriza a identificar las dos señales temporales.

Ahora lo resolvemos de principio a fin.

EJEMPLO RESUELTO 1

DFT de dos muestras

Calcula la DFT de x=[1,3], N=2.

  1. Convención

    N=2; la directa suma sin divisor y W₂=exp(−πi)=−1.
  2. Índice cero

    Los pesos son [1;1], por tanto X[0]=1+3=4.
  3. Índice uno

    Los pesos son [1;−1], por tanto X[1]=1−3=−2.
  4. Resultado

    X=[4;−2].
  5. Inversa

    x[0]=(4−2)/2=1 y x[1]=(4+2)/2=3.
  6. Energía

    En tiempo: 1²+3²=10.
    En frecuencia: [4²+(−2)²]/2=10.
Resultado

X=[4,−2].

Lo comprobamos

Parseval confirma 1²+3²=10 y (4²+(−2)²)/2=20/2=10; además la inversa recupera [1,3].

EJEMPLO RESUELTO 2

Una señal constante

x=[2,2,2,2]. Calcula su DFT.

  1. Datos

    Cuatro muestras constantes de amplitud dos.

  2. Frecuencia cero

    Cada peso es uno: X[0]=2+2+2+2=8.
  3. Otras frecuencias

    Cada suma de raíces no constantes vale cero; al multiplicar por dos continúa siendo cero.

  4. Espectro

    X=[8;0;0;0].
  5. Media e inversa

    X[0]/4=2; la inversa de la única componente constante recupera dos en cada posición.

  6. Energía

    La energía temporal es 4·2²=16 y la espectral normalizada 8²/4=16.
Resultado

X=[8,0,0,0].

Lo comprobamos

La media es X[0]/4=2. La energía temporal 4·2²=16 coincide con 8²/4=16.

Los símbolos que hemos usado

x[n]
Muestra de entrada cuyo índice entero es n; aquí usamos un bloque finito.
N
Número de muestras del bloque y número de coeficientes de su DFT.
X[k]
Coeficiente complejo del índice de frecuencia k.
i
Unidad imaginaria: i² = −1.
W_N
Raíz de unidad e^(−2πi/N), un giro complejo de ángulo −2π/N.
fₛ
Frecuencia de muestreo en muestras por segundo, si los datos proceden de muestreo uniforme.
Δf
Separación entre frecuencias de la rejilla de análisis: fₛ/N.

Ahora te toca a ti.

Tienes cinco ejercicios. Inténtalos; las pistas te ayudan si te atascas.

Practicar este tema →

Para ampliar