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.

fftshift

Desplazar un componente de frecuencia cero al centro del espectro

Descripción

ejemplo

Y = fftshift(X) reorganiza una transformada de Fourier X desplazando el componente de frecuencia cero al centro del arreglo.

  • Si X es un vector, fftshift intercambia las mitades izquierda y derecha de X.

  • Si X es una matriz, fftshift intercambia el primer cuadrante de X por el tercero, y el segundo cuadrante por el cuarto.

  • Si X es un arreglo multidimensional, fftshift intercambia semiespacios de X en cada dimensión.

ejemplo

Y = fftshift(X,dim) opera en la dimensión dim de X. Por ejemplo, si X es una matriz cuyas filas representan múltiples transformadas 1D, fftshift(X,2) intercambia las mitades de cada fila de X.

Ejemplos

contraer todo

Intercambie las mitades izquierda y derecha de un vector fila. Si un vector tiene un número impar de elementos, el elemento del medio se considera parte de la mitad izquierda del vector.

Xeven = [1 2 3 4 5 6];
fftshift(Xeven)
ans = 1×6

     4     5     6     1     2     3

Xodd = [1 2 3 4 5 6 7];
fftshift(Xodd)
ans = 1×7

     5     6     7     1     2     3     4

Al analizar los componentes de frecuencia de señales, puede ser útil desplazar los componentes de frecuencia cero al centro.

Cree una señal S, calcule su transformada de Fourier y represente la potencia.

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S = cos(2*pi*15*t);
n = length(S);
X = fft(S);
f = (0:n-1)*(fs/n);     %frequency range
power = abs(X).^2/n;    %power
plot(f,power)

Figure contains an axes object. The axes object contains an object of type line.

Desplace los componentes de frecuencia cero y represente la potencia centrada en cero.

Y = fftshift(X);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift)

Figure contains an axes object. The axes object contains an object of type line.

Puede procesar múltiples señales 1D representándolas como filas en una matriz. Después, use el argumento de dimensión para calcular la transformada de Fourier y desplazar los componentes de frecuencia cero para cada fila.

Cree una matriz A cuyas filas representen dos señales 1D y calcule la transformada de Fourier de cada señal. Represente la potencia para cada señal.

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S1 = cos(2*pi*15*t);
S2 = cos(2*pi*30*t);
n = length(S1);
A = [S1; S2];
X = fft(A,[],2);
f = (0:n-1)*(fs/n);     % frequency range
power = abs(X).^2/n;    % power
plot(f,power(1,:),f,power(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

Desplace los componentes de frecuencia cero y represente la potencia centrada en cero de cada señal.

Y = fftshift(X,2);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift(1,:),fshift,powershift(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector, matriz o arreglo multidimensional.

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

Dimensión en la que operar, especificada como escalar entero positivo. Si no se especifica ningún valor, fftshift intercambia en todas las dimensiones.

  • Considere una matriz de entrada Xc. La operación fftshift(Xc,1) intercambia mitades de cada columna de Xc.

  • Considere una matriz Xr. La operación fftshift(Xr,2) intercambia mitades de cada fila de Xr.

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

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | |