Discrete Fourier Transform (DFT) Explained | MATLAB examples
¿Qué es la Transformada Discreta de Fourier?
Introducción a la DFT y IDFT
- La Transformada Discreta de Fourier (DFT) transforma señales del dominio del tiempo al dominio de la frecuencia, revelando sus componentes ocultos.
- Se presentará un ejemplo práctico en MATLAB para visualizar la DFT en acción.
Fundamentos de la Transformada de Fourier
- La Transformada de Fourier permite identificar las frecuencias presentes en una señal. Un ejemplo muestra una onda sinusoidal a 5 Hz con un pico claro en el dominio de frecuencia.
- En señales más complejas, como una suma de múltiples ondas sinusoidales, la DFT ayuda a descomponerlas y revela picos claros en 5 Hz y 8 Hz.
Definición y Funcionamiento de la DFT
- La DFT opera sobre datos digitales (muestreados), realizando transformaciones similares a las vistas anteriormente pero con datos discretos.
- El algoritmo Fast Fourier Transform (FFT) calcula la DFT más eficientemente, reduciendo la complejidad computacional.
Proceso Matemático detrás de la DFT
- La ecuación de la DFT se centra en términos cosenoides; cada valor k genera muestras para diferentes frecuencias.
- Multiplicamos el vector completo del tiempo por una matriz transformadora para obtener el espectro que indica las frecuencias presentes.
Espectro y Componentes Complejos
- El espectro se representa mediante números complejos: parte real (cosenoides) y parte imaginaria (sinusoides).
- Utilizando matrices complejas, podemos calcular todo el espectro en un solo paso mediante multiplicación matricial.
¿Cómo funciona la Inversa de la DFT?
Reconstrucción del Señal Original
- Conociendo el espectro, podemos reconstruir el señal original sumando los componentes escalados por sus amplitudes correspondientes.
- Se ilustra cómo crear matrices para las partes cosenoide y senoide, multiplicándolas por el espectro para recrear el señal original.
Ecuaciones Fundamentales
- Las ecuaciones que definen estas transformaciones son adaptadas al digitalizar señales; se utilizan sumas en lugar de integrales.
- Se presentan dos formas equivalentes para expresar la DFT: representación exponencial y representaciones seno-coseno, útiles en diversas aplicaciones.
Implementación de DFT en MATLAB
Generación de la matriz de análisis DFT
- En la primera parte, se genera la matriz de análisis DFT con un tamaño de 100 por 100, correspondiente a la frecuencia de muestreo. Se utiliza la forma exponencial donde:
- La parte real representa la base coseno.
- La parte imaginaria representa la base seno de la transformación.
Visualización de las partes real e imaginaria
- Se grafican las primeras cuatro filas de la matriz, mostrando por separado las partes real e imaginaria. Los gráficos confirman que:
- La parte real consiste en ondas coseno con frecuencias crecientes.
- La parte imaginaria consiste en ondas seno.
Cálculo del espectro del señal
- Se calcula el espectro del señal multiplicando el vector del señal con la matriz de transformación DFT. También se utiliza:
- La función
fftde MATLAB para calcular el espectro y comparar resultados.
- Las frecuencias positivas están en la primera parte del vector espectral y las negativas en la segunda. Para alinear correctamente:
- Se usa
fftshift, que reposiciona simétricamente las frecuencias alrededor de cero.
Visualización y verificación del espectro
- Al visualizar el espectro, se observa un pico claro a 5 Hz, confirmando su presencia en el señal. Además:
- Aparece un segundo pico a -5 Hz debido a que el espectro es simétrico alrededor de cero.
- El espectro calculado con
fftcoincide perfectamente con los resultados anteriores, validando ambos métodos.
Reconstrucción del señal original
- En esta sección final, se intenta reconstruir el señal original desde su espectro usando IDFT (Transformada Inversa DFT):
- Primero se calcula la matriz IDFT transponiendo la matriz DFT para alinear correctamente las ondas seno y coseno.
- Finalmente, se recrea el señal original mediante multiplicación matricial y se verifica:
- El error de reconstrucción es cercano a cero, lo que demuestra que IDFT restaura exitosamente los datos originales.