基于时间抽取的基2快速傅里叶变换算法实现
项目介绍
本项目实现了按时间抽取(Decimation-in-Time, DIT)的基2快速傅里叶变换算法,通过递归分治策略将N点DFT分解为两个N/2点DFT进行计算,将计算复杂度从传统DFT的O(N²)显著降低到O(Nlog₂N)。算法采用标准位序倒置预处理和优化的蝶形运算结构,是数字信号处理领域的核心算法实现。
功能特性
- 高效分治算法:采用递归分解机制,实现O(Nlog₂N)的高效计算
- 位序倒置预处理:输入序列需按倒位序排列,确保蝶形运算的正确数据流
- 蝶形运算优化:精心优化的复数乘加运算核心,确保计算精度和效率
- 标准输出格式:输出结果为自然顺序排列的频域复数序列
- 严格的幂次约束:仅支持长度为2的幂次(如32,64,128等)的输入序列
使用方法
输入要求
- 数据类型:复数序列
- 序列长度:必须是2的幂次(N=2^m,m为正整数)
- 排列顺序:按位倒序排列的输入序列
- 示例:8点FFT输入格式为[a0,a4,a2,a6,a1,a5,a3,a7]
输出结果
- 数据类型:复数序列(长度与输入相同)
- 排列顺序:自然顺序(0,1,2,...,N-1)
- 内容:输入信号的频域表示,包含幅度和相位信息
- 示例:8点FFT输出格式为[X(0),X(1),X(2),...,X(7)]
系统要求
- MATLAB R2016a或更高版本
- 支持复数运算的基本数学库
- 足够内存以处理最大输入序列长度
文件说明
主程序文件完整实现了基2快速傅里叶变换的核心算法流程,包括递归分治控制逻辑、蝶形运算单元计算、复数运算处理以及结果整理输出等功能模块,同时负责验证输入序列的合法性和长度约束条件。