基于蝶形算法的一维与二维快速傅里叶变换实现
项目介绍
本项目实现了基于蝶形计算的一维与二维快速傅里叶变换(FFT)算法。采用分治递归策略,通过高效的蝶形运算将离散傅里叶变换(DFT)的计算复杂度从O(N²)降低至O(N log N)。项目包含完整的正向变换(时域到频域)和逆向变换(频域到时域)功能,支持复数信号处理,并确保逆向变换能够高精度重构原始信号。
功能特性
- 高效一维FFT:支持长度为2ⁿ的复数向量变换,自动处理实数输入
- 二维FFT实现:基于行列分解法,支持M×N维复数矩阵变换(M、N均为2的幂次方)
- 双向变换能力:提供正向FFT(分析)和逆向FFT(合成)功能
- 高精度重构:逆向变换结果与原始信号的误差小于1e-12
- 灵活参数配置:支持变换方向选择和缩放因子自定义
- 频域分析:可选输出频域幅值谱和相位信息
使用方法
一维FFT示例
% 生成测试信号(128点复数序列)
x = complex(randn(128,1), randn(128,1));
% 执行正向FFT(时域→频域)
X = fft_1d(x, 'forward');
% 执行逆向FFT(频域→时域)
x_recon = fft_1d(X, 'inverse');
% 验证重构精度
max_error = max(abs(x - x_recon)); % 应小于1e-12
二维FFT示例
% 生成64×64测试矩阵
img = complex(randn(64), randn(64));
% 二维正向FFT
F = fft_2d(img, 'forward');
% 二维逆向FFT
img_recon = fft_2d(F, 'inverse');
系统要求
- MATLAB R2018a 或更高版本
- 支持复数运算的基本环境
- 内存需求:取决于输入数据规模(建议≥4GB)
文件说明
主程序文件集成了核心变换功能的演示与验证流程,包含一维和二维信号的完整处理示例。具体实现了算法性能测试、精度验证对比以及变换结果的可视化展示,通过实际运算案例直观体现蝶形算法的计算效率与数值准确性。