Artefactos en FFT

10

Recientemente me di cuenta de que los FFT no son perfectos. Es decir, si tomo una señal y luego tomo su FFT, y luego hago una FFT inversa, la salida resultante no es exactamente la misma que la entrada. Aquí hay una imagen para mostrarle lo que quiero decir:FFT no siempre funciona

Creo que la imagen se explica por sí misma. La señal IFFT es solo una transformación inversa del "espectro FFT" y el gráfico "Diferencia" es la diferencia entre la señal IFFT y la señal original ( ).IFFT - Original

Claramente hay algunos artefactos, aunque son muy pequeños. Me gustaría saber por qué ocurren en primer lugar. ¿Es esto debido a la ventana finita de la transformada de Fourier? ¿O por algo en el algoritmo FFT?

10-dieciséis10-15

Kitchi
fuente
44
Todas las matemáticas de precisión limitada tienen estos errores, no solo las FFT.
Endolito

Respuestas:

16

Las diferencias que ve se deben a errores numéricos en formato de coma flotante. Todas las operaciones necesarias para realizar una FFT y una FFT inversa solo se pueden realizar con precisión finita y usted ha mostrado el resultado de esta precisión finita en su diagrama inferior derecho.

Matt L.
fuente
¿Habría una situación en la que este error pudiera explotar más allá de la precisión de coma flotante?
Kitchi
66
10-dieciséis2-53
@Kitchi: sí, hay muchas situaciones en las que los errores numéricos pueden ser un problema importante, incluso en formato de coma flotante. La inversión matricial sería uno de los muchos ejemplos. Todo tiene que ver con el número de condición .
Matt L.
1
@MattL. - Maravilloso! Gracias por la referencia
Kitchi
7

En general, un número no puede representarse exactamente en forma digital. Se introduce un error. Si estás en Matlab, puedes escribir eps en el comando, te da un número.

EPS, sin argumentos, es la distancia desde 1.0 al siguiente número de doble precisión más grande, es decir EPS = 2 ^ (- 52).

El error que ve en su gráfico está en el rango devuelto por eps (es decir 2 ^ (- 52)).

Aunque espera valores reales en su salida de su IFFT, puede ver que su parte imaginaria no es exactamente igual a cero. La misma cosa.

niaren
fuente