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:
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 ( ).
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?
fft
fourier-transform
dft
Kitchi
fuente
fuente
Respuestas:
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.
fuente
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.
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.
fuente