Fast Fourier Transform (FFT)

What Is a Fast Fourier Transform (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.

A graph showing time in seconds on the x-axis and amplitude on the y-axis and a graph showing frequency on the x-axis and power on the y-axis.

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).

A graph of a persistence spectrum with frequency in kHz on the x-axis and power spectrum in dB on the y-axis. A bar on the side displays a color-coded density percentage.

Persistence spectrum, a type of time-frequency view, that can be used for spectral analysis of signals. (See time-frequency functions in MATLAB)

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, convolution, digital signal processing

Panel Navigation

Signal Processing Tutorial

Free tutorial on signal processing methods for spectral analysis