Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

ifft

Transformada rápida de Fourier inversa

Descripción

ejemplo

X = ifft(Y) calcula la transformada discreta de Fourier inversa de Y utilizando un algoritmo de transformada rápida de Fourier. X es del mismo tamaño que Y.

  • Si Y es un vector, ifft(Y) devuelve la transformada inversa del vector.

  • Si Y es una matriz, ifft(Y) devuelve la transformada inversa de cada columna de la matriz.

  • Si Y es un arreglo multidimensional, ifft(Y) trata los valores de la primera dimensión cuyo tamaño no es igual a 1 como vectores y devuelve la transformada inversa de cada vector.

ejemplo

X = ifft(Y,n) devuelve la transformada de Fourier inversa de n puntos de Y rellenando Y con ceros al final hasta la longitud n.

ejemplo

X = ifft(Y,n,dim) devuelve la transformada de Fourier inversa en la dimensión dim. Por ejemplo, si Y es una matriz, ifft(Y,n,2) devuelve la transformada inversa de n puntos de cada fila.

ejemplo

X = ifft(___,symflag) especifica la simetría de Y además de cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores. Por ejemplo, ifft(Y,'symmetric') trata Y como simétrica conjugada.

Ejemplos

contraer todo

La transformada de Fourier y su inversa convierten datos muestreados en tiempo y espacio en datos muestreados en frecuencia.

Cree un vector y calcule su transformada de Fourier.

X = [1 2 3 4 5];
Y = fft(X)
Y = 1×5 complex

  15.0000 + 0.0000i  -2.5000 + 3.4410i  -2.5000 + 0.8123i  -2.5000 - 0.8123i  -2.5000 - 3.4410i

Calcule la transformada inversa de Y, que es igual que el vector original X.

ifft(Y)
ans = 1×5

     1     2     3     4     5

Halle la transformada inversa de Fourier del espectro de un lado que es la transformada de Fourier de una señal real.

Cargue el espectro de un lado en el dominio de la frecuencia. Muestre la frecuencia y el periodo de muestreo de este espectro.

load Y1spectrum.mat
Fs
Fs = 1000
T
T = 1.0000e-03

Represente la magnitud compleja del espectro de un lado.

L1 = length(Y1);
f = Fs/(2*L1-1)*(0:L1-1);
plot(f,abs(Y1))
xlabel("f (Hz)")
ylabel("|Y1(f)|")

Figure contains an axes object. The axes object with xlabel f (Hz), ylabel |Y1(f)| contains an object of type line.

La transformada discreta de Fourier de una señal en el dominio del tiempo tiene una naturaleza periódica, donde la primera mitad de su espectro se encuentra en frecuencias positivas y la otra en frecuencias negativas, y el primer elemento se reserva para la frecuencia cero. Para las señales reales, la transformada discreta de Fourier en el dominio de la frecuencia es un espectro de dos lados, donde el espectro en las frecuencias positivas es el conjugado complejo del espectro en las frecuencias negativas con la mitad de las amplitudes pico de la señal real en el dominio del tiempo. Para hallar la transformada inversa de Fourier de un espectro de un lado, convierta el espectro de un lado en un espectro de dos lados.

Y2 = [Y1(1) Y1(2:end)/2 fliplr(conj(Y1(2:end)))/2];

Halle la transformada inversa de Fourier del espectro de dos lados para recuperar la señal real en el dominio del tiempo.

X = ifft(Y2);

Represente la señal.

t = (0:length(X)-1)*T;
plot(t,X)
xlabel("t (seconds)")
ylabel("X(t)")

Figure contains an axes object. The axes object with xlabel t (seconds), ylabel X(t) contains an object of type line.

La función ifft le permite controlar el tamaño de la transformada.

Cree una matriz aleatoria de 3 por 5 y calcule la transformada de Fourier inversa de 8 puntos de cada fila. Cada fila del resultado tiene longitud 8.

Y = rand(3,5);
n = 8;
X = ifft(Y,n,2);
size(X)
ans = 1×2

     3     8

En el caso de vectores simétricos casi conjugados, puede calcular la transformada de Fourier inversa más rápido especificando la opción 'symmetric', que también garantiza que la salida sea real. Los datos simétricos casi conjugados pueden aparecer cuando los cálculos introducen un error de redondeo.

Cree un vector Y que sea casi simétrico conjugado y calcule su transformada de Fourier inversa. A continuación, calcule la transformada inversa especificando la opción 'symmetric', que elimina las partes imaginarias cercanas a 0.

Y = [1 2:4+eps(4) 4:-1:2]
Y = 1×7

    1.0000    2.0000    3.0000    4.0000    4.0000    3.0000    2.0000

X = ifft(Y)
X = 1×7 complex

   2.7143 + 0.0000i  -0.7213 + 0.0000i  -0.0440 - 0.0000i  -0.0919 + 0.0000i  -0.0919 - 0.0000i  -0.0440 + 0.0000i  -0.7213 - 0.0000i

Xsym = ifft(Y,'symmetric')
Xsym = 1×7

    2.7143   -0.7213   -0.0440   -0.0919   -0.0919   -0.0440   -0.7213

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector, matriz o arreglo multidimensional. Si Y es del tipo single, ifft calcula de forma nativa en precisión simple e X es también del tipo single. De lo contrario, X se devuelve como tipo double.

Tipos de datos: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Soporte de números complejos:

Longitud de transformada inversa, especificada como [] o un escalar entero no negativo. Rellenar Y con ceros especificando una longitud de transformada mayor que la longitud de Y puede mejorar el rendimiento de ifft. La longitud se especifica normalmente como una potencia de 2 o un producto de números primos pequeños. Si n es menor que la longitud de la señal, ifft ignora el resto de valores de señal más allá de la n-ésima entrada y devuelve el resultado truncado. Si n es 0, ifft devuelve una matriz vacía.

Tipos de datos: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Dimensión en la que operar, especificada como escalar entero positivo. De forma predeterminada, dim es la primera dimensión del arreglo cuyo tamaño no es igual a 1. Por ejemplo, considere una matriz Y.

  • ifft(Y,[],1) devuelve la transformada de Fourier inversa de cada columna.

    ifft(Y,[],1) column-wise operation

  • ifft(Y,[],2) devuelve la transformada de Fourier inversa de cada fila.

    ifft(Y,[],2) row-wise operation

Tipos de datos: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Tipo de simetría, especificado como 'nonsymmetric' o 'symmetric'. Cuando Y no es exactamente simétrica conjugada debido a un error de redondeo, ifft(Y,'symmetric') trata Y como si fuera simétrica conjugada ignorando la segunda mitad de sus elementos (que están en el espectro de frecuencias negativas). Para obtener más información sobre la simetría conjugada, consulte Algoritmos.

Más acerca de

contraer todo

Transformada discreta de Fourier de un vector

Y = fft(X) y X = ifft(Y) implementan la transformada de Fourier y la transformada inversa de Fourier, respectivamente. Para X e Y de longitud n, estas transformadas se definen de la siguiente manera:

Y(k)=j=1nX(j)Wn(j1)(k1)X(j)=1nk=1nY(k)Wn(j1)(k1),

donde

Wn=e(2πi)/n

es una de n raíces de unidad.

Algoritmos

  • La función ifft comprueba si los vectores de Y son simétricos conjugados. Si los vectores de Y son simétricos conjugados, el cálculo de la transformada inversa es más rápido y la salida es real.

    Una función g(a) es simétrica conjugada si g(a)=g*(a). Sin embargo, la transformada rápida de Fourier de una señal en el dominio del tiempo tiene una mitad de su espectro en frecuencias positivas y la otra en frecuencias negativas, y el primer elemento se reserva para la frecuencia cero. Por esta razón, un vector v es simétrico conjugado cuando v(2:end) es igual a conj(v(end:-1:2)).

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a