Discrete Fourier Transform (DFT) Explained | MATLAB examples

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 fft de 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 fft coincide 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.
Video description

The Discrete Fourier Transform (DFT) is a fundamental concept in digital signal processing (DSP) that allows us to analyze signals in the frequency domain. By transforming signals from the time domain to the frequency domain, DFT helps in spectral analysis, signal decomposition, and frequency component extraction. This transformation is widely used in wireless communications, image processing, data compression, radar systems, and biomedical signal analysis. The Inverse Discrete Fourier Transform (IDFT) reverses this process, converting frequency components back into their original time-domain representation. Both DFT and IDFT are essential in fields like audio processing, telecommunications, and real-time signal analysis, enabling efficient filtering, modulation, and reconstruction of signals. In this tutorial, we’ll break down the mathematical foundations of DFT and IDFT, explain how they work, and demonstrate their MATLAB implementation. We will also compare DFT vs. FFT (Fast Fourier Transform), an algorithm that significantly improves computational efficiency. By the end of this session, you will understand how to compute DFT using matrix multiplication, visualize the signal spectrum, and reconstruct signals using Inverse DFT. 🚀 What You’ll Learn: ✔ What the Fourier Transform (FT) is and how it works ✔ The difference between DFT and IDFT ✔ How to compute DFT using matrix multiplication ✔ How to use MATLAB’s fft and ifft functions for fast computation ✔ How to visualize signal spectra and interpret frequency components ⏱️ Chapters 0:00 - Introduction 0:29 - Understanding Fourier Transform, DFT, and FFT 2:05 - DFT: Matrix Representation and Procedure 4:25 - Invserse DFT 5:20 - FT and DFT: Mathematical Formulation 6:03 - MATLAB Code Example 💻 MATLAB Code: Download the full MATLAB script here: https://github.com/marwyp/WaveformAcademy 📚 Related Videos: ▶ Orthogonal Frequency Division Multiplexing (OFDM) Explained | MATLAB examples - https://youtu.be/XY8c-Az4M6U ▶ Phase Shift Keying (PSK) Explained | MATLAB examples - https://youtu.be/7nw2ZxXht60 ▶ Quadrature Amplitude Modulation (QAM) Explained | MATLAB examples – https://youtu.be/0ql89coCj6U ▶ Digital Modulations (QAM, PSK, ASK, FSK) Explained | MATLAB examples - https://youtu.be/MY1Ia_YvcjU 🔔 If you found this tutorial helpful, like the video, comment your questions, and subscribe for more content on DFT, signal processing, and MATLAB tutorials!