Transformada rápida de Fourier inversa en MATLAB

Ammar Ali 18 agosto 2022
Transformada rápida de Fourier inversa en MATLAB

Este tutorial discutirá cómo encontrar la transformada rápida de Fourier inversa utilizando la función ifft() de MATLAB.

Transformada rápida de Fourier inversaMATLAB

Podemos usar la función ifft() de Matlab para encontrar la transformada rápida de Fourier inversa de un vector, matriz o arreglo multidimensional. La función ifft() tiene cuatro sintaxis que se muestran a continuación.

Out = ifft(X)
Out = ifft(X,n)
Out = ifft(X,n,dim)
Out = ifft(___,symflag)

La primera sintaxis devolverá la transformada rápida de Fourier inversa de la entrada X utilizando el algoritmo de transformada rápida de Fourier. La función ifft() comprueba los vectores simétricos conjugados presentes en la entrada X; si los vectores son simétricos conjugados, la salida será rápida y real.

Un vector es simétrico conjugado si el producto de su matriz de intercambio anti-diagonal y su complejo conjugado es igual al vector original. En el caso de una señal en el dominio del tiempo, su transformada rápida de Fourier contiene la mitad del espectro de frecuencias positivas y la mitad del espectro de frecuencias negativas.

La entrada X puede ser un vector, una matriz o un arreglo multidimensional. La primera sintaxis devolverá un vector que contiene la transformada rápida de Fourier inversa de un vector en caso de que la entrada sea un vector, y el vector de salida tendrá la misma longitud que el vector de entrada.

Si la entrada es una matriz, la sintaxis devolverá una matriz que contiene la transformada rápida de Fourier inversa de las columnas de la matriz, y el tamaño de la matriz de salida será la matriz de entrada. Si la entrada es una matriz multidimensional, la función devolverá la transformada rápida inversa de Fourier de valores a lo largo de la primera dimensión, tratándolos como vectores.

La segunda sintaxis se usa para agregar puntos en los que queremos encontrar la transformada rápida de Fourier inversa como el segundo argumento n. Si no agregamos puntos, la función usará los índices de los elementos como puntos.

Si el argumento n es cero, la salida de la función será una matriz vacía. Si la longitud del argumento n es menor que la longitud del vector o matriz de entrada, la función ifft() ignorará los valores restantes.

Si la longitud del argumento n es mayor que la longitud del vector o matriz, la función agregará ceros entre los valores de entrada, mejorando el rendimiento de la función. La longitud del argumento n suele ser el producto de pequeños números primos o una potencia de 2.

La tercera sintaxis se usa para establecer la dimensión como el tercer argumento, dim, que se usa para encontrar la transformada rápida de Fourier inversa en el caso de una matriz y un arreglo multidimensional. Por ejemplo, en el caso de entrada de matriz, la función encontrará la transformada rápida de Fourier inversa de cada columna, pero si agregamos 2 como tercer argumento, la función devolverá la transformada rápida de Fourier inversa de cada fila.

El cuarto argumento se usa para establecer la simetría de la entrada como simétrica o no simétrica. Si la entrada no es exactamente simétrica, podemos usar este argumento para configurarla como simétrica para que la función trate la entrada como simétrica.

Por ejemplo, creemos un vector y encontremos su transformada rápida de Fourier usando la función fft(), y luego encontraremos la transformada rápida inversa de Fourier usando la función ifft(). Vea el código a continuación.

clc
clear

n = [1 6 2]
fourier = fft(n)
inverse_fourier = ifft(fourier)

Producción :

n =

     1     6     2


fourier =

   9.0000 + 0.0000i  -3.0000 - 3.4641i  -3.0000 + 3.4641i


inverse_fourier =

    1.0000    6.0000    2.0000

En el código anterior, usamos un vector de tres elementos para encontrar las transformadas de Fourier y Fourier inversa para comprobar el resultado de la función ifft(). Podemos ver en la salida que el vector de entrada n y la salida de la función ifft() son iguales, lo que significa que la función funciona perfectamente.

Podemos ver en la salida que la transformada de Fourier del vector de entrada n contiene magnitud y fase, los cuales se utilizan para reconstruir la señal original. Si quitamos una parte de la transformada de Fourier, como la magnitud o la fase, no podremos reconstruir la señal original.

Tenemos que asegurarnos de que la señal contiene la magnitud y la fase antes de usar la función ifft() para reconstruir la señal original. También debemos asegurarnos de que la señal no se desplace de su posición original.

Por ejemplo, podemos usar la función fftshift() para encontrar la transformada de Fourier y desplazar la componente de frecuencia cero al centro del espectro. No podemos reconstruir correctamente el single original si usamos la función ifft() para encontrar su transformada inversa de Fourier.

En este caso, podemos utilizar la función ifftshift() en lugar de la función ifft(), y la función ifftshift() encontrará la transformada inversa de Fourier y desplazará la señal de vuelta a su posición original.

La salida también cambiará si configuramos los puntos usando la segunda sintaxis que se muestra arriba. Por ejemplo, en el caso de puntos de longitud mayor que la longitud del vector de entrada, la señal reconstruida contendrá más elementos que el vector original o los elementos de la matriz.

Si cambiamos la dimensión de la función ifft(), la salida también cambiará y es posible que no coincida con el vector o la matriz original. Por ejemplo, repitamos el ejemplo anterior y cambiemos el número de puntos usados para tomar la transformada inversa de Fourier del vector de entrada.

Vea el código a continuación.

clc
clear

n = [1 6 2]
fourier = fft(n)
inverse_fourier = ifft(fourier,4)

Producción :

n =

     1     6     2


fourier =

   9.0000 + 0.0000i  -3.0000 - 3.4641i  -3.0000 + 3.4641i


inverse_fourier =

   0.7500 + 0.0000i   3.8660 - 1.6160i   2.2500 + 1.7321i   2.1340 - 0.1160i

Podemos ver que la salida de la función ifft() no coincide con el vector de entrada n porque hemos cambiado el número de puntos a 4, que por defecto eran 3. Consulte este enlace para obtener más detalles sobre la función ifft().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook