基于Cooley-Tukey算法的快速傅里叶变换(FFT)自主实现
项目介绍
本项目通过MATLAB编程实现了基于Cooley-Tukey分治算法的快速傅里叶变换功能。该实现完全独立编写,不依赖MATLAB内置的fft函数,能够对任意长度的信号序列进行高效的频域分析。项目采用基2时间抽取算法和蝶形运算优化,结合递归分治策略,实现了复数序列的时频转换,并提供了完整的频谱可视化功能。
功能特性
- 自主FFT实现:采用Cooley-Tukey算法从头编写,避免使用内置fft函数
- 通用长度支持:支持任意长度信号处理(包括非2的幂次长度)
- 高效计算:通过蝶形运算优化和分治策略提升计算效率
- 完整频谱分析:输出包含幅度谱和相位谱的频域数据
- 可视化展示:自动生成频谱幅度图(归一化频率vs振幅)
- 灵活输入:支持一维复数序列,实数输入自动转换处理
使用方法
- 准备输入数据:准备长度为1-1024的一维复数向量(行向量或列向量)
- 示例1:
x = [1, 2, 3, 4]
- 示例2:
x = randn(1, 512) + 1j*randn(1, 512)- 运行主程序:在MATLAB环境中执行主函数,程序将自动完成:
- FFT计算处理
- 频谱数据分析
- 结果可视化展示
- 查看结果:程序输出包含:
- 复数频谱向量(与输入等长)
- 频谱幅度图显示
系统要求
- MATLAB R2018a或更高版本
- 支持复数运算和图形显示功能
文件说明
主程序文件实现了完整的FFT处理流水线,包括输入数据的验证与预处理、基2时间抽取算法的核心计算、蝶形运算的递归执行、频域结果的规范化处理以及频谱图的可视化生成。该文件整合了信号读取、算法运算、结果分析和图形展示的全流程功能,确保用户通过单一接口即可完成从时域信号到频域分析的完整处理。