快速傅里叶变换 (FFT)

什么是快速傅里叶变换 (FFT)

快速傅里叶变换 (FFT) 是离散傅里叶变换 (DFT) 的高度优化实现,用于将离散信号从时域转换为频域。FFT 计算提供关于信号的频率成分、相位和其他属性的信息。

一张图在 x 轴上以秒为单位显示时间,在 y 轴上显示幅值;一张图在 x 轴上以赫兹为单位显示频率,在 y 轴上显示功率。

蓝鲸呻吟音声音频信号使用 FFT 分解为其频率分量。(请参阅 MATLAB 代码示例

常见的 FFT 算法包括库利-图基算法、质因数 FFT 算法和雷德 FFT 算法。最常用的 FFT 算法是库利-图基算法,它将大型 DFT 分解为若干较小的 DFT,以提高计算速度并降低复杂度。FFT 在许多领域都有应用。

FFT 应用

在信号处理中,FFT 构成频域分析(频谱分析)的基础,并用于信号滤波、频谱估计、数据压缩等应用。FFT 的变体,如短时傅里叶变换,还支持同时在时域和频域中进行分析。这些方法可用于各种信号,如音频和语音、雷达、通信和其他传感器数据信号。FFT 有时也用作更复杂信号处理方法的中间步骤。

在图像处理中,FFT 用于滤波和图像压缩。FFT 也用于物理和数学中以求解偏微分方程 (PDE)。

持久频谱图,在 x 轴上以 kHz 为单位显示频率,在 y 轴上以 dB 为单位显示功率谱。侧边栏显示着色的密度百分比。

持久频谱,一种时频视图,可用于信号的频谱分析。(请参阅 MATLAB 中的时频函数

MATLAB 中的 FFT

MATLAB® 提供许多函数,如 fftifftfft2,使用这些函数可以直接实现 FFT。在 MATLAB 中,FFT 的实现经过优化,可根据数据大小和计算从各种 FFT 算法中进行选择。同样,Simulink® 提供 FFT 模块,可用于基于模型的设计和仿真。MATLAB 和 Simulink 还支持通过自动代码生成在特定硬件(例如 FPGA、包括 ARM 在内的处理器以及 NVIDIA GPU)上实现 FFT。

浏览以下函数和示例,了解有关傅里叶变换以及使用 MATLAB 实现 FFT 的应用和实现的详细信息。

在 MATLAB Online 中运行 FFT 示例

使用 FFT 从信号中去除噪声

FFT 和频域分析简介

使用 FFT 的功率谱密度估计

FFT 的硬件实现

在可编程逻辑设备上实现 FFT 并不像软件实现那样直接。关于速度和精度等工程权衡的决策错误或代码效率低下可能会影响应用的质量和性能。使用 MATLAB 和 Simulink 代码生成工具,可以轻松地在各种硬件设备上实现 FFT,涵盖 ARM 等 GPU 直到 FPGA 等更专业的设备。


另请参阅: MATLAB 和 Simulink 在信号处理领域的应用, MATLAB 在图像处理和计算机视觉领域的应用, MATLAB 和 Simulink 在雷达系统中的应用, Signal Processing Toolbox, Audio Toolbox, Radar Toolbox, 去噪, 卷积, 数字信号处理, 奈奎斯特定理