Fast Fourier Transform (FFT)

What is FFT?

A fast Fourier transform (FFT) is a highly optimized implementation of the discrete Fourier transform (DFT), which convert discrete signals from the time domain to the frequency domain. FFT computations provide information about the frequency content, phase, and other properties of the signal.

Blue whale moan audio signal decomposed into its frequency components using FFT.

Blue whale moan audio signal decomposed into its frequency components using FFT. (See MATLAB code example)

Popular FFT algorithms include the Cooley-Tukey algorithm, prime factor FFT algorithm, and Rader’s FFT algorithm. The most commonly used FFT algorithm is the Cooley-Tukey algorithm, which reduces a large DFT into smaller DFTs to increase computation speed and reduce complexity. FFT has applications in many fields.

FFT Applications

In signal processing, FFT forms the basis of frequency domain analysis (spectral analysis) and is used for signal filtering, spectral estimation, data compression, and other applications. Variations of the FFT such as the short-time Fourier transform also allow for simultaneous analysis in time and frequency domains. These techniques can be used for a variety of signals such as audio and speech, radar, communication, and other sensor data signals. FFT is also sometimes used as an intermediate step for more complex signal processing techniques.

In image processing, FFT is used for filtering and image compression. FFT is also used in physics and mathematics to solve partial differential equations (PDEs).

FFT in MATLAB

MATLAB® provides many functions like fft, ifft, and fft2 with which FFT can be implemented directly. In MATLAB, FFT implementation is optimized to choose from among various FFT algorithms depending on the data size and computation. Similarly, Simulink® provides blocks for FFT that can be used in Model-Based Design and simulation. MATLAB and Simulink also support implementation of FFT on specific hardware such as FPGAs, processors including ARM, and NVIDIA GPUs, through automatic code generation.

Explore the functions and examples below to learn more about Fourier transforms and applications and implementations of FFT using MATLAB.

Run FFT Examples in MATLAB Online

Remove noise from signals using FFT

Introduction to FFT and Frequency-Domain Analysis

Power Spectral Density Estimates Using FFT

Hardware Implementation of FFT

Implementing FFT on programmable logic devices is not as straightforward as software implementation. Incorrect decisions on engineering trade-offs like speed and accuracy or inefficient code can impact the quality and performance of an application. With the MATLAB and Simulink code generation tools, it is easy to implement FFT on various hardware devices, from general-purpose processors such as ARM to more specialized devices such as FPGA.

See also: MATLAB and Simulink for signal processing, MATLAB for image processing and computer vision, MATLAB and Simulink for radar systems, Signal Processing Toolbox, Audio Toolbox, Radar Toolbox, denoising

Panel Navigation
Power Electronics Control Design

Signal Processing Tutorial

Free tutorial on signal processing methods for spectral analysis