"¿Hay alguna aplicación práctica?" Definitivamente sí, al menos para verificar el código y los errores vinculados.
"En teoría, la teoría y la práctica coinciden. En la práctica, no lo hacen". Entonces, matemáticamente, no, como respondió Matt. Porque (como ya se respondió), (hasta un factor de escala potencial). Sin embargo, puede ser útil computacionalmente, porque la ecuación anterior generalmente se implementa a través de la transformada discreta de Fourier y su avatar rápido, la FFT.F(F(x(t)))=x(−t)
Una primera razón surge de la voluntad de verificar que la implementación de Fourier, ya sea codificada por usted, otra persona o desde una biblioteca, haga lo que debería hacer en sus datos. El orden de las muestras, los factores de escala, los límites del tipo de entrada (realidad, profundidad de bits) o la longitud son fuentes de posibles errores posteriores para implementaciones de Fourier como la FFT. Por lo tanto, como un control de cordura, siempre es bueno verificar que las versiones implementadas hereden, al menos aproximadamente, las propiedades teóricas. Como verá, como lo muestra Machupicchu, no recupera exactamente una entrada real invertida: a menudo, la parte imaginaria no es exactamente cero, y la parte real es lo que se esperaba, pero dentro de un pequeño error relativo, debido a cálculos de computadora imperfectos (coma flotante) dentro de una tolerancia dependiente de la máquina. Esto se hace visible en la siguiente imagen. La FFT se aplica dos veces en una señal aleatoria de 32 muestras y se voltea. Como puede ver, el error es pequeño, utilizando flotadores de doble precisión.
Si el error no es relativamente pequeño, puede haber errores en el código que usa.
Un segundo se relaciona con grandes volúmenes de datos o grandes cantidades de cálculos iterativos de FFT, como con la tomografía. Allí, los pequeños errores relativos anteriores pueden acumularse y propagarse, e incluso inducir divergencia computacional o errores algunos detalles aquí . Esto se hace visible en la siguiente imagen. Para una señal no tan larga ( muestras), realizamos las siguientes iteraciones:
donde denota la FFT. La figura mostrada está submuestreada. Y calculamos el error máximoen cada iteraciónx01e6xk+1=Re(f(f(f(f(xk)))))
fmax|xk−x0|
Como puede ver, el orden de magnitud del error ha cambiado debido al tamaño de la señal. Además, el error máximo aumenta constantemente. Después de iteraciones, sigue siendo lo suficientemente pequeño. Pero puede adivinar que, con un cubo -voxel, y millones de iteraciones, este error puede volverse insignificante.10001000×1000×1000
Limitar el error y evaluar su comportamiento a través de iteraciones puede ayudar a detectar dichos comportamientos y reducirlos mediante un umbral o redondeo apropiado.
Información Adicional:
No, tomar la transformada de Fourier dos veces es equivalente a la inversión de tiempo (o la inversión de cualquier dimensión en la que se encuentre). Simplemente obtienes veces una constante que depende del tipo de escala que uses para la transformación de Fourier.x(−t)
La transformada inversa de Fourier aplicada a una señal de dominio de tiempo solo da el espectro con inversión de frecuencia. Echa un vistazo a esta respuesta para más detalles.
fuente
Mientras tomando la transformada de Fourier directa dos veces seguidas sólo te da un tiempo de inversión trivial de que sería mucho más barato de implementar sin FT, no es cosa útil que se puede hacer tomando una transformada de Fourier, la aplicación de alguna otra operación, y luego otra vez Fourier transforma el resultado de eso. El ejemplo más conocido es la autocorrelación , que es una especie de convolución de una señal consigo misma. Y las circunvoluciones son O ( n 2 ) si se implementan ingenuamente, pero solo O ( n · log n) al tomar un desvío a través de la transformada de Fourier. Por lo tanto, la autocorrelación generalmente se realiza mediante FT'ing una señal, tomando el cuadrado absoluto e IFT-ing nuevamente en el dominio del tiempo.
fuente
La transformación 2D de Fourier (2D DFT) se utiliza en el procesamiento de imágenes, ya que una imagen puede verse como una señal 2D. Por ejemplo, para una imagen en escala de grises , , eso significa que en las coordenadas e la imagen tiene un valor de intensidad z. Mira esto por ejemplo:I I(x,y)=z x y
https://ch.mathworks.com/help/matlab/ref/fft2.html
Prueba esto:
y comparar con:
más bien así. Apliqué fft2 a veces, no ifft2 la segunda vez. Creo que esto ilustra lo que dijo @Matt L.:
"tomar la transformada de Fourier dos veces es equivalente a la inversión de tiempo",
puede ver que la imagen está invertida debido a la -i imaginaria negativa en lugar de positiva en ifft ().
También lo hice para una señal 1D (por ejemplo, temporal):
fuente
Para responder a la segunda pregunta, en las comunicaciones digitales hay una técnica en uso en los teléfonos celulares en este momento que hace un buen uso de aplicar el IFFT a una señal de dominio de tiempo. OFDM aplica una IFFT a una secuencia de datos en el dominio del tiempo en el transmisor, luego la invierte con una FFT en el receptor. Si bien la literatura le gusta usar IFFT-> FFT, realmente no importa cuál sea el primero.
El beneficio clave aquí está muy relacionado con la respuesta de leftaroundabout. Hay un tipo de distorsión que se llama desvanecimiento por trayectos múltiples , y los teléfonos celulares en áreas urbanas densas tienen que lidiar con mucho. Nos gusta modelar el desvanecimiento por trayectos múltiples como una convolución con coeficientes desconocidos. Debido a que la cadena de eventos se parece a IFFT-> Transmitir-> Aplicar ruta múltiple-> Recibir-> FFT, el desvanecimiento de la ruta múltiple pasará por la FFT y se convertirá en una simple multiplicación punto por punto con valores desconocidos. Estos valores son mucho más fáciles de predecir y rectificar que los coeficientes de convolución.
Este efecto también hace que una señal sea más resistente a la trayectoria múltiple / desvanecimiento que podría eliminar (o "nulo") un canal de frecuencia completo. Este artículo describe cómo
fuente
Esta información fue proporcionada por el usuario "Birdwes", pero no tenía suficiente reputación para publicarla él mismo, así que la publicaré aquí para él porque parece relevante y útil.
"No tengo suficientes puntos en este foro para agregar un comentario, así que lo hago aquí: eche un vistazo al código fuente de Accord.Math Hilbert Transform y verá por qué esta puede ser una opción viable: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs
Los usos prácticos incluyen la construcción de transmisores SSB, o casi cualquier plan de modulación. Busque la modulación IQ y verá por qué el cambio de fase de -90 grados es relevante. Un producto de principios trigonométricos. por ejemplo, https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf
La Transformación de Hilbert utiliza un paso intermedio entre las FFT de poner a cero los componentes negativos. Puedes abusar de él para filtrar otras frecuencias también ".
fuente