25/04/2017
MATLAB, un entorno de computación numérica ampliamente utilizado, ofrece la función fftshift
para manipular los resultados de la Transformada Rápida de Fourier (FFT). Esta función es crucial para la correcta interpretación de los espectros de frecuencia, ya que reorganiza los datos de salida de la FFT para que la frecuencia cero (o componente DC) se ubique en el centro del gráfico, en lugar de en uno de los extremos.

Funcionamiento de fftshift en MATLAB
La función Y = fftshift(X)
reordena los elementos de la matriz X
(que típicamente contiene los resultados de una FFT) desplazando el componente de frecuencia cero al centro. Su comportamiento varía según la dimensionalidad de la entrada:
- Vector: Si
X
es un vector,fftshift
intercambia las mitades izquierda y derecha del vector. La mitad izquierda pasa a ser la segunda mitad, y viceversa. - Matriz: Si
X
es una matriz,fftshift
intercambia los cuadrantes: el primer cuadrante con el tercero, y el segundo con el cuarto. Esto facilita la visualización de la simetría que generalmente existe en el espectro de frecuencias.
Es importante destacar que fftshift
no realiza ningún cálculo matemático sobre los datos; simplemente reorganiza su orden. Esto es fundamental para la visualización correcta de los espectros, ya que la frecuencia cero suele ser el punto de referencia más significativo en el análisis de frecuencia.
La Transformada Rápida de Fourier (FFT)
Antes de profundizar en la visualización con fftshift
, es fundamental comprender la FFT. La FFT es un algoritmo eficiente para calcular la Transformada Discreta de Fourier (DFT). La DFT transforma una señal del dominio del tiempo al dominio de la frecuencia, mostrando las diferentes componentes de frecuencia que constituyen la señal. En otras palabras, descompone una señal compleja en sus frecuencias constituyentes.
La fórmula matemática de la DFT es:
X k = Σ n=0 N-1 x n e -j2πkn/N
Donde:
- x n representa la señal en el dominio del tiempo.
- X k representa la señal en el dominio de la frecuencia.
- N es el número de muestras de la señal.
- j es la unidad imaginaria (√-1).
La FFT optimiza el cálculo de la DFT, reduciendo la complejidad computacional de O(N 2) a O(N log 2N). Esta mejora de eficiencia es fundamental para el procesamiento de señales de gran tamaño.
FFT en MATLAB y la función fft
En MATLAB, la función fft(x)
calcula la FFT del vector de entrada x
. El resultado es un vector de números complejos, donde cada elemento representa la amplitud y la fase de una componente de frecuencia específica. Sin embargo, la ordenación de estas componentes de frecuencia no es intuitiva: la frecuencia cero se encuentra en el primer elemento, seguida de las frecuencias positivas y, finalmente, las frecuencias negativas.
Para una representación más clara e interpretable, se emplea fftshift
para reordenar los datos.
Visualización con fftshift: Un Ejemplo
Consideremos una señal sencilla, una onda sinusoidal:
t = 0:0.01:1;x = sin(2pi5t); % Señal de 5 Hzy = fft(x);z = fftshift(y);f = (-length(x)/2:length(x)/2-1)/(length(x)0.01); % Vector de frecuenciasplot(f,abs(z));xlabel('Frecuencia (Hz)');ylabel('Amplitud');title('Espectro de Frecuencia con fftshift');
En este código:
- Se genera una onda sinusoidal de 5 Hz.
- Se calcula la FFT usando
fft
. - Se reorganiza el espectro usando
fftshift
. - Se crea un vector de frecuencias para el eje horizontal.
- Se grafica el espectro de magnitud (valor absoluto de los datos).
La gráfica resultante mostrará un pico pronunciado en 5 Hz, y otro en -5 Hz (debido a la simetría de la transformada de Fourier), ambos centrados en la frecuencia 0, demostrando el efecto visual de fftshift
.
Comparativa: fft vs. fftshift en MATLAB
La siguiente tabla compara la visualización del espectro de frecuencia con y sin fftshift
:
Función | Descripción | Gráfica |
---|---|---|
fft(x) | Transformada Rápida de Fourier. La frecuencia 0 se encuentra al comienzo del vector resultante. | El pico de frecuencia se encuentra en un extremo del gráfico. |
fftshift(fft(x)) | Combina FFT y fftshift . La frecuencia 0 se encuentra en el centro del vector resultante. | El pico de frecuencia se encuentra en el centro del gráfico, facilitando su interpretación. |
Consultas habituales sobre fftshift
A continuación, se responden algunas consultas habituales sobre el uso de fftshift
en MATLAB:
- ¿Es necesario usar siempre fftshift después de fft? No es obligatorio, pero es altamente recomendable para una mejor visualización e interpretación del espectro de frecuencia. Si no se utiliza
fftshift
, la frecuencia cero estará en un extremo, lo que puede dificultar el análisis. - ¿Qué pasa si fftshift se aplica a una matriz de dimensiones impares?
fftshift
gestiona correctamente las matrices de dimensiones impares, asegurando que el componente de frecuencia cero esté en el centro. - ¿Puedo usar fftshift con otros tipos de transformadas?
fftshift
está diseñado principalmente para la reorganización de los datos de la FFT, pero se puede aplicar a otros tipos de datos para realizar reordenamientos similares.
Aplicaciones de fftshift
La función fftshift
tiene diversas aplicaciones en el procesamiento de señales y análisis de datos, incluyendo:
- Análisis espectral: Visualizar espectros de potencia y densidad espectral de potencia.
- Filtrado de señales: Diseñar y aplicar filtros en el dominio de la frecuencia.
- Procesamiento de imágenes: Realizar transformadas de Fourier en imágenes para el procesamiento de imágenes.
- Análisis de vibraciones: Identificar frecuencias dominantes en señales de vibración.
En resumen, fftshift
es una herramienta esencial en MATLAB para el manejo y visualización de los resultados de la FFT, facilitando la interpretación de los espectros de frecuencia y mejorando la eficiencia del análisis de señales.