¿Existe alguna aplicación práctica para realizar una transformación doble de Fourier? … O una transformación inversa de Fourier en una entrada de dominio de tiempo?

11

En matemáticas puedes tomar la derivada doble o la integral doble de una función. Hay muchos casos en los que realizar una doble derivada modela una situación práctica del mundo real, como encontrar la aceleración de un objeto.

Dado que la transformación de Fourier toma una señal real o compleja como entrada y produce una señal compleja como salida, no hay nada que le impida tomar esa salida y aplicar la transformación de Fourier por segunda vez ... ¿Hay algún uso práctico para hacerlo? ¿esta? ¿Ayuda a modelar algunas situaciones complejas del mundo real?

Con la misma lógica, nada le impedirá tomar la transformada inversa de Fourier de su señal de entrada original en el dominio del tiempo ... ¿sería útil alguna vez? ¿Por qué o por qué no?

tjwrona1992
fuente

Respuestas:

9

"¿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.

datos, su doble volteo FFT y error

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ónx01e6

xk+1=Re(f(f(f(f(xk)))))
fmax|xkx0|

datos, su FFT cuádruple y errores máximos sobre iteraciones

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:

Laurent Duval
fuente
1
Realmente me encanta esta respuesta y la habría marcado como la respuesta aceptada, pero creo que lo que la mayoría de las personas que vienen a esta pregunta buscarán es la información teórica que Matt proporcionó en el enlace. +1 aunque por una gran respuesta.
tjwrona1992
1
Realmente aprecio tu comentario. Sin embargo, he actualizado la respuesta con las cifras apropiadas, para mostrar que los errores en las implementaciones discretas de Fourier son importantes.
Laurent Duval
17

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.

Matt L.
fuente
44
Recursivamente me voló la cabeza.
tjwrona1992
¿Debo ilustrar lo que Matt? L dijo pero en 2D con mi código? es decir, obtenemos f (-x, -y).
Machupicchu
@ Machupicchu, sí, eso parece correcto.
tjwrona1992
jaja, entonces puedes seleccionar mi respuesta y la más alta ^^ (él tiene 53K rep., así que no hace ninguna diferencia para él jaja)
Machupicchu
Justo después de decir que me di cuenta de que probablemente hay formas más fáciles que una doble transformación de Fourier para invertir una señal en el tiempo jaja
tjwrona1992
16

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.

a la izquierda
fuente
2
Además, hay cepstrum , la transformada inversa de Fourier del logaritmo de la transformada de Fourier. Se puede usar para detectar señales periódicas.
Olli Niemitalo
12

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:II(x,y)=zxy

https://ch.mathworks.com/help/matlab/ref/fft2.html

Prueba esto:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

y comparar con:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

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 ().

ingrese la descripción de la imagen aquí

También lo hice para una señal 1D (por ejemplo, temporal):

ingrese la descripción de la imagen aquí

Machu Picchu
fuente
Soy consciente de que existe una transformación de Fourier 2D, pero eso no es lo mismo que tomar una señal de entrada y ejecutarla a través del algoritmo y luego tomar la salida de esa ejecución y ejecutarla nuevamente.
tjwrona1992
1
La transformada de Fourier es separable.
Machupicchu
Mi pregunta también se aplicaría a una transformación 2D de Fourier. En teoría, podría tomar una señal de entrada 2D, aplicar la transformación de Fourier 2D, luego tomar la señal de salida 2D y usarla como entrada y aplicar nuevamente la transformación de Fourier 2D.
tjwrona1992
mira en Matlab lo que sucede si haces lo siguiente: cf. Actualicé mi respuesta
Machupicchu
1
Te sugiero que uses la parte real en lugar del valor absoluto
Laurent Duval
6

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.

diagrama del transmisor OFDM

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

Dicha propagación por trayectos múltiples puede crear nulos espectrales profundos en la banda de paso de frecuencia de las señales de radio recibidas debido a la interferencia destructiva de dos copias de la señal que llegan en momentos ligeramente diferentes. Un nulo en OFDM puede eliminar una o más subportadoras. El mismo nulo en QAM de una sola portadora podría dejar caer una ráfaga de símbolos secuencialmente adyacentes, dependiendo del patrón de datos específico en ese instante. En casos extremos, la pérdida de adquisición de señal es incluso posible. Luego se reduce al poder de la FEC para recuperar la secuencia de datos original.

myeslf
fuente
¡Guau, esto es increíblemente interesante! ¡Gracias! :)
tjwrona1992
1

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 ".

tjwrona1992
fuente