祈灵工具箱

∿傅里叶级数与 FFT 可视化 - 部分和动画、本轮圆、频谱分析

把傅里叶分析的三个经典场景放在一起。傅里叶级数:选择方波、锯齿波、三角波、脉冲波(可调占空比)或输入任意函数 f(x),在 [−L, L] 上展开,预设波形用解析公式给出 aₙ、bₙ,自定义函数用自适应 Gauss–Kronrod 数值积分计算;拖动项数 N 或点播放,看部分和如何一项项逼近原函数,在间断点附近能清楚看到约 9% 的吉布斯过冲(工具会实时算出过冲比例),系数用棒状图显示,也可以把部分和送进函数图像。本轮圆:在画布上按住拖动画一个闭合图形(或选心形、五角星、正方形),按弧长等距取 256 个点做复数离散傅里叶变换,每个频率分量是一个匀速旋转的圆,按半径从大到小首尾相接,末端就画出原图形;调节圆的个数可以看到细节如何逐渐出现。FFT 频谱:输入合成信号表达式(含采样率、点数和可复现的高斯噪声)或直接粘贴采样值,选择矩形、Hann、Hamming、Blackman 窗,得到单边幅度谱(可切换 dB)和相位谱,自动列出主要频率成分;长度是 2 的幂时用基 2 FFT,其它长度用 Bluestein 算法做精确 DFT。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用傅里叶级数与 FFT 可视化

  1. 1选择面板:傅里叶级数、本轮圆画图或 FFT 频谱
  2. 2选波形或输入函数/信号,调整项数、圆的个数、采样率或窗函数
  3. 3观察部分和动画与系数、本轮圆重建,或读取频谱峰值的频率、幅度与相位

常见问题

吉布斯现象是什么?加更多项能消除吗?
函数有跳跃间断时,傅里叶部分和在跳跃点两侧会出现过冲和振荡。项数增加时振荡被挤得越来越靠近间断点,但最大过冲并不变小,始终约为跳跃幅度的 8.95%(方波从 −1 跳到 1,部分和最大约 1.179)。这是用连续的正弦函数逼近间断函数的必然结果;部分和在间断点处收敛到左右极限的平均值。
FFT 结果的幅度为什么和信号的振幅对不上?
工具已经把单边谱乘 2 并除以窗函数的相干增益,频率恰好落在频点(k·fs/N)上的正弦波读数就是它的峰值振幅。频率不在频点上时,能量会泄漏到相邻频点,峰值读数偏低,这叫频谱泄漏;加 Hann、Blackman 等窗可以降低泄漏的旁瓣,代价是主峰变宽。想提高频率分辨率,需要更长的采样时长(Δf = fs/N)。
本轮圆是怎么画出图形的?
把画出的闭合路径看成复数序列 z = x + iy,做离散傅里叶变换得到一组系数 c_k,于是 z(t) = Σ c_k·e^(ikt):每一项是一个半径为 |c_k|、每周期转 k 圈的圆。把这些圆按半径从大到小首尾相接,最后一个圆的末端随时间走过的轨迹就是原图形。只用前几个大圆时得到的是平滑的轮廓,圆越多细节越完整,256 个全用上时可以精确还原采样点。
aₙ 和 bₙ 是怎么算的?
周期为 2L 的函数展开为 f(x) ≈ a₀/2 + Σ[aₙcos(nπx/L) + bₙsin(nπx/L)],其中 aₙ = (1/L)∫f(x)cos(nπx/L)dx、bₙ = (1/L)∫f(x)sin(nπx/L)dx,积分区间 [−L, L]。方波、锯齿波等预设波形直接用解析公式(如方波 bₙ = 4/(nπ),n 为奇数);自定义函数把区间分成 16 段,每段用自适应 Gauss–Kronrod 求积,精度约 1e−10。奇函数的 aₙ 全为 0,偶函数的 bₙ 全为 0。