FFT分析 一、从傅里叶级数到傅里叶变换1.1 傅里叶级数的基本思想傅里叶级数的核心思想是将周期函数分解为正弦和余弦函数的叠加使我们能在频域分析信号的频率成分。对于周期为 T 的函数 f(t)其傅里叶级数展开为\(f_T(t) a_0 \sum_{n1}^{\infty} \Big[ a_n \cos(n\omega_0 t) b_n \sin(n\omega_0 t) \Big]\)其中基频 \(\omega_0 \frac{2\pi}{T}\)系数计算公式为\(a_n \frac{2}{T} \int_{-T/2}^{T/2} f(t) \cos(n\omega_0 t)\, dt \quad (n \ge 1)\)\(b_n \frac{2}{T} \int_{-T/2}^{T/2} f(t) \sin(n\omega_0 t)\, dt \quad (n \ge 1)\)\(a_0 \frac{1}{T}\int_{-T/2}^{T/2} f(t)\, dt\)示例周期为 2π 的方波信号其傅里叶级数展开为\(f(t) \frac{4}{\pi} \left( \sin(t) \frac{1}{3}\sin(3t) \frac{1}{5}\sin(5t) \cdots \right)\)方波只含奇次谐波的正弦分量所有余弦系数 \(a_n 0\)偶次谐波正弦系数 \(b_{2n} 0\)。1.2 从周期函数到非周期函数傅里叶变换当周期 T → ∞周期函数变为非周期函数。此时基频 \(\omega_0 \frac{2\pi}{T} \to 0\)离散频率 \(n\omega_0\) 变为连续频率 \(\omega\)系数 \(a_n, b_n\) 趋于 0但 \(\frac{2}{T}a_n\) 和 \(\frac{2}{T}b_n\) 保持有限。为此定义两个实函数\(A(\omega) \int_{-\infty}^{\infty} f(t) \cos(\omega t)\, dt\)\(B(\omega) \int_{-\infty}^{\infty} f(t) \sin(\omega t)\, dt\)这就是实数形式的傅里叶变换分别表示信号在不同频率上的余弦和正弦分量强度。1.3 物理意义解释\(A(\omega)\)信号中频率为 \(\omega\) 的余弦分量强度\(B(\omega)\)信号中频率为 \(\omega\) 的正弦分量强度若某频率的 \(A(\omega)\) 或 \(B(\omega)\) 为 0则信号不含该频率的相应分量例如方波只含奇次谐波偶数频率的系数全部为 0。示例高斯函数 \(f(t) e^{-t^2}\) 的傅里叶变换为\(A(\omega) \sqrt{\pi} e^{-\omega^2/4}, \quad B(\omega) 0\)高斯函数的傅里叶变换仍是高斯函数且只有余弦分量偶函数。二、从连续到离散离散傅里叶变换DFT实际数字信号处理中计算机只能处理有限长度、离散采样的信号。DFT 是连续傅里叶变换在离散域的自然延伸。2.1 时域采样与离散化设采样间隔 \(T_s\)秒采样频率 \(f_s 1/T_s\)Hz。对连续信号 \(x(t)\) 采样得离散序列\(x[n] x(nT_s), \quad n 0, 1, 2, \ldots\)将积分替换为求和得离散时间傅里叶变换的实数形式\(A(\omega) \sum_{n-\infty}^{\infty} x[n] \cos(\omega n), \quad B(\omega) \sum_{n-\infty}^{\infty} x[n] \sin(\omega n)\)示例设 \(f_s 1000\text{Hz}\)\(T_s 1\text{ms}\)对 \(x(t) \sin(2\pi \cdot 100t)\) 采样\(x[n] \sin(2\pi \cdot 100 \cdot n \cdot 0.001) \sin(0.2\pi n)\)其中 \(n 0, 1, 2, \ldots\)。2.2 频域采样与有限长度计算机还需在频域采样。在 \([0, 2\pi)\) 内均匀取 N 个点\(\omega_k \frac{2\pi k}{N}, \quad k 0, 1, 2, \ldots, N-1\)频域采样点数通常等于时域采样点数 N得 DFT 实数形式\(A[k] \sum_{n0}^{N-1} x[n] \cos\!\left(\frac{2\pi k n}{N}\right), \quad B[k] \sum_{n0}^{N-1} x[n] \sin\!\left(\frac{2\pi k n}{N}\right)\)什么是 BinDFT 把连续频谱均匀切成 N 小块每块叫一个bin频点。N 个输出 \(X[0], X[1], \ldots, X[N-1]\) 各对应一个 bin。\(k\) 是 bin 序号Bin k 对应频率 \(k \cdot f_s/N\)。2.3 复数形式的 DFT引入欧拉公式 \(e^{-i\theta} \cos\theta - i\sin\theta\)合并为复数形式\(X[k] A[k] - iB[k] \sum_{n0}^{N-1} x[n] e^{-i 2\pi kn/N}\)其中 \(k 0, 1, \ldots, N-1\)。示例\(N4\)\(x[n] [1, 2, 3, 4]\)\(X[0] 1 2 3 4 10\)\(X[1] 1 2e^{-i\pi/2} 3e^{-i\pi} 4e^{-i3\pi/2} -2 2i\)\(X[2] 1 2e^{-i\pi} 3e^{-i2\pi} 4e^{-i3\pi} -2\)\(X[3] 1 2e^{-i3\pi/2} 3e^{-i3\pi} 4e^{-i9\pi/2} -2 - 2i\)可见 \(X[3] X^*[1]\)符合共轭对称性。2.4 DFT 输出的物理意义对 N 点序列 \(x[n]\)DFT 输出 N 个复数 \(X[k]\)每个对应数字频率 \(\omega_k 2\pi k/N\)实部\(Re(X[k]) A[k]\)余弦分量强度虚部\(Im(X[k]) -B[k]\)正弦分量强度的负数幅度\(|X[k]| \sqrt{A[k]^2 B[k]^2}\)该频率分量的总强度相位\(\arg(X[k]) \arctan\left(\frac{-B[k]}{A[k]}\right)\)该频率分量的相位DFT 的本质是将时域信号分解为 N 个不同频率的正弦和余弦分量每个分量由幅度和相位描述。2.5 频率分辨率与 Bin 宽度每个 bin 在频率轴上的宽度即频率分辨率。采集 N 个点用时 \(T N/f_s\)频率间隔为\(\Delta f \frac{f_s}{N}\)第 k 个频率点\(k 0, 1, \ldots, N/2\)的物理频率为\(f_k k \cdot \Delta f k \cdot \frac{f_s}{N}\)可分析的最高频率奈奎斯特频率为 \(f_{\text{max}} f_s/2\)。若 \(\Delta f 1\text{Hz}\)则 Bin 0 对应 0~1HzBin 1 对应 1~2Hz以此类推。\(X[1]\) 代表的就是这个 1Hz 宽度内的信号强度。两个关键参数采样频率 \(f_s\)决定频率上限\(f_s/2\)采样点数 \(N\)与 \(f_s\) 共同决定频率分辨率 \(\Delta f\)示例 1\(f_s 1000\text{Hz}\)\(N 1024\)\(\Delta f 1000/1024 \approx 0.9766\text{Hz}\)\(f_{\text{max}} 500\text{Hz}\)Bin 50\(f_{50} \approx 48.83\text{Hz}\)示例 2\(N8\)\(f_s 8000\text{Hz}\)8 个 bin0~7\(\Delta f 1000\text{Hz}\)Bin 0\(0\text{Hz}\)直流Bin 1\(1000\text{Hz}\)基频Bin 2\(2000\text{Hz}\)二次谐波Bin 3\(3000\text{Hz}\)三次谐波分辨率仅 1000Hz 时500Hz 信号会在 Bin 0 和 Bin 1 之间跑偏——这就是频谱泄漏的根源。2.6 直观理解整数次振动DFT 的本质用一系列能在观测窗口内完成整数次振动的正弦波去丈量原始信号。设定观测窗口 \(T\)采集 N 个点所用时间基频k1在 \(T\) 秒内完成 1 次完整振动频率 \(1/T \Delta f\)。2倍基频k2在同样的 \(T\) 秒内完成 2 次完整振动频率 \(2/T 2\Delta f\)。第 k 个频率分量在窗口 \(T\) 内正好完成 k 次完整振动。这就是 DFT 只能分析频率为 \(\Delta f\) 整数倍的信号成分的原因。三、DFT 的快速算法FFT直接计算 N 点 DFT 需 \(O(N^2)\) 次复数乘法FFT 通过分解降至 \(O(N\log N)\)。下面介绍基‑2 时间抽取DITFFT。3.1 定义与旋转因子N 点 DFT\(X[k] \sum_{n0}^{N-1} x[n] W_N^{kn}, \quad W_N e^{-i 2\pi/N}\)\(W_N\) 称旋转因子twiddle factor具有周期性 \(W_N^{kN} W_N^k\) 和对称性 \(W_N^{kN/2} -W_N^k\)。3.2 奇偶分解时间抽取设 N 为 2 的幂将 \(x[n]\) 按奇偶分为两个半长序列\(x_{\text{even}}[m] x[2m], \quad x_{\text{odd}}[m] x[2m1], \quad m 0, 1, \ldots, N/2-1\)代入 DFT 定义\( \begin{aligned} X[k] \sum_{m0}^{N/2-1} x[2m] W_N^{k(2m)} \sum_{m0}^{N/2-1} x[2m1] W_N^{k(2m1)} \\ \sum_{m0}^{N/2-1} x_{\text{even}}[m] (W_N^2)^{km} W_N^k \sum_{m0}^{N/2-1} x_{\text{odd}}[m] (W_N^2)^{km} \end{aligned} \)因 \(W_N^2 e^{-i 2\pi/(N/2)} W_{N/2}\)两个求和分别为偶/奇数序列的 \(N/2\) 点 DFT记 \(E[k], O[k]\)\(X[k] E[k] W_N^k O[k]\)3.3 利用周期性完成全部输出\(E[k]\) 和 \(O[k]\) 以 \(N/2\) 为周期且 \(W_N^{kN/2} -W_N^k\)后半段可直接由前半段计算\( \begin{aligned} X[k] E[k] W_N^k O[k] \\ X[kN/2] E[k] - W_N^k O[k] \end{aligned} \quad k 0, 1, \ldots, N/2-1 \)这就是蝶形运算。递归分解至子变换长度为 1总运算量降至 \(\frac{N}{2}\log_2 N\) 次复数乘法和 \(N\log_2 N\) 次复数加法。3.4 位反转的数学根基‑2 DIT FFT 中输入序列需按位反转重排。这是因为递归的奇偶分离不断打乱原始顺序。设 N2m输入下标 n 的二进制表示\(n (b_{m-1}b_{m-2}\cdots b_1b_0)_2\)位反转后下标\(\text{rev}(n) (b_0b_1\cdots b_{m-2}b_{m-1})_2\)这种排列使蝶形运算可就地完成无需额外存储。位反转可通过位运算高效实现是 FFT 高效性的关键。四、频谱分析的两大核心议题掌握 DFT/FFT 原理后频谱分析面临两个核心问题频率分辨率与 Bin、频谱泄漏与窗函数。4.1 频率分辨率与 Bin深度回顾在 DFT/FFT 中bin仓/频点是把连续频谱从 0 到 \(f_s\) 均匀切成 N 小块后得到的每个小格子。DFT 输出的 N 个复数 \(X[0] \sim X[N-1]\) 各对应一个 bin。\(k\) 就是bin 的编号索引Bin 0\(k0\)直流分量频率为 0Bin 1\(k1\)基频Bin k\(kk\)对应频率 \(k \cdot f_s/N\)一句话\(k\) 是 bin 序号Bin 是装某频率成分能量的容器。4.1.1 频率分辨率与 Bin 宽度每个 bin 在频率轴上的宽度相邻 k 的频率间隔为\(\Delta f \frac{f_s}{N}\)若 \(\Delta f 1\text{Hz}\)Bin 0 对应 0~1HzBin 1 对应 1~2Hz依此类推。4.1.2 数字示例回顾\(N8\)\(f_s 8000\text{Hz}\)8 个 bin0~7\(\Delta f 1000\text{Hz}\)。Bin 0~3 分别对应 0、1000、2000、3000Hz。分辨率仅 1000Hz 时500Hz 信号会在 Bin 0 和 Bin 1 间跑偏能量泄漏——这正是下面要讨论的问题。4.2 频谱泄漏与窗函数4.2.1 频谱泄漏的概念频谱泄漏信号真实频率未落在 DFT 频率网格bin上时能量扩散到邻近频率点。原本干净的谱线变成被抹开的峰伴随起伏的旁瓣。根源在于 DFT 的两个基本假设有限长度观测和周期性延拓。当它们与信号真实特性不匹配时便产生泄漏。4.2.2 泄漏的根本原因非整周期采样DFT 默认 N 个采样点是一个周期信号的完整周期并将其首尾相接、无限循环。它看到的不是原始干净信号而是这 N 个点拼出的循环版本。例如\(f_s 1000\text{Hz}\)\(N 256\)\(f_{\text{sig}} 100\text{Hz}\)\(\text{周期数} \frac{f_{\text{sig}}}{\Delta f} \frac{100}{1000/256} \approx 25.6\)256 个采样点中100Hz 正弦波走了 25.6 个周期。非整数周期导致周期性延拓时首尾出现跳变——平滑正弦波中突然出现尖锐拐点意味着信号中被强行加入了原本不存在的高频成分。数学解释时域截断与频域卷积有限长度采样等价于给无限长信号乘矩形窗\(x_{\text{windowed}}[n] x[n] \cdot w[n]\)\(w[n]\) 在窗口内为 1外为 0。时域相乘对应频域卷积\(X_{\text{windowed}}(f) X(f) * W(f)\)\(W(f)\) 是矩形窗的频谱即 sinc 函数。100Hz 正弦波的理想频谱是 ±100Hz 处的两根细线与 sinc 卷积后被抹成 sinc 函数的形状。4.2.3 泄漏的直观表现接上例\(\Delta f 1000/256 \approx 3.906\text{Hz}\)Bin 25 对应 97.5HzBin 26 对应 101.4Hz。100Hz 落在两者之间导致能量铺开能量分散到 Bin 25、26、27 等多个 bin主峰变宽谱线变成有宽度的峰出现旁瓣主峰两侧出现 sinc 旁瓣4.2.4 矩形窗的固有缺陷矩形窗频谱sinc 函数具有宽大主瓣、显著旁瓣第一旁瓣仅比主瓣低约 13dB和缓慢衰减的旁瓣6dB/octave。即使频率对准网格旁瓣仍会掩盖小幅频率分量。判断标准\(\frac{f_{\text{sig}}}{\Delta f} \notin \mathbb{Z}\)即信号频率与分辨率之比非整数时发生泄漏。4.2.5 多频信号间的干涉泄漏多频信号中强信号0dB的泄漏旁瓣可能淹没弱信号-60dB的主瓣。即使两者都落在网格上旁瓣也会互相叠加造成虚假峰或基线抬升。4.2.6 窗函数缓解泄漏的工具窗函数通过平滑信号两端幅度减缓周期性延拓时的跳变。常见窗函数汉宁窗Hanning旁瓣衰减快主瓣较宽汉明窗Hamming第一旁瓣更低衰减较慢布莱克曼窗Blackman旁瓣极低主瓣最宽选择窗函数需权衡以下方面窗函数主瓣宽度第一旁瓣电平旁瓣衰减速度适用场景矩形窗最窄-13dB6dB/octave整周期采样频率分辨率优先汉宁窗较宽-31dB18dB/octave一般频谱分析兼顾分辨率和泄漏抑制汉明窗较宽-41dB6dB/octave需要极低第一旁瓣的场景布莱克曼窗最宽-58dB18dB/octave极低旁瓣、大动态范围场景4.2.7 总结泄漏的完整链条物理现实采集非整数周期如 25.6 个信号处理DFT 将其当作完整周期循环播放首尾不连续数学本质时域被矩形窗截断频域原谱线与 sinc 函数卷积最终现象能量扩散主峰变宽出现旁瓣理解频谱泄漏是工程实践的关键。选择合适的窗函数、调整采样参数、理解泄漏对测量的影响是 DSP 工程师的基本功。五、工程实践本章以 ARM CMSIS-DSP 库为例展示实数 FFT 的调用方式和输出格式并给出窗函数选择指南。5.1 实数 FFTarm_rfft_fast_f32的输出实数信号频谱具有共轭对称性 \(X[N-k] X^*[k]\)可设计专门的实数 FFT 将计算量减半。以arm_rfft_fast_f32为例输入 N 个实数输出长度仍为 N 的float32_t数组存放实部与虚部交替的复数。由于共轭对称性库只计算前 \(N/21\) 个频率点利用对称性填满数组。输出数组索引输出指针pOut索引含义pOut[0]直流分量频率 0的实部pOut[1]直流分量的虚部始终为 0pOut[2*k]第 k 个频率分量的实部\(A[k]\)pOut[2*k1]第 k 个频率分量的虚部\(B[k]\)......pOut[N-2]第 \(N/2\) 个频率奈奎斯特频率的实部pOut[N-1]奈奎斯特频率的虚部始终为 0几点说明虚部对应正弦系数 \(B[k]\)符号与数学定义一致\(X[k] A[k] - iB[k]\)pOut[2*k]即 \(A[k]\)pOut[2*k1]即 \(B[k]\)。频率 k 对应的物理频率\(f_k k \cdot \frac{f_s}{N}, \quad k 0, 1, \ldots, N/2\)获取幅度\(M[k]\) 和相位\(\phi[k]\)\(M[k] \sqrt{A[k]^2 B[k]^2}\)\(\phi[k] \arctan2(-B[k], A[k])\)很多库如 ARM 的arm_cmplx_mag_f32直接用 A、B 算幅度。5.2 窗函数的实际选择指南5.2.1 核心权衡维度频率分辨率主瓣越窄能分辨的相邻频率越近。矩形窗最窄但旁瓣最差。泄漏抑制旁瓣越低、衰减越快对弱信号干扰越小。幅值精度加窗改变信号幅度需根据相干增益补偿。5.2.2 场景化选择建议应用场景推荐窗函数理由整周期采样/已知频率校准矩形窗无泄漏风险时提供最佳频率分辨率通用频谱分析汉宁窗主瓣宽度和旁瓣衰减的最佳平衡最常用检测微弱信号/大动态范围布莱克曼窗旁瓣极低-58dB避免强信号掩盖弱信号精确测量单频幅值平顶窗Flat Top主瓣顶部平坦幅值误差极小频率分辨率差音频处理/语谱图汉明窗第一旁瓣很低-41dB适合短时傅里叶变换5.2.3 实践中的操作流程先不加窗分析用矩形窗跑一次 FFT观察频谱形态。判断泄漏程度查看主峰是否尖锐、旁瓣是否明显。选择合适的窗参考上表选择窗函数对比加窗前后频谱变化。注意幅度补偿加窗后能量减小精确幅值需除以相干增益或使用归一化系数。掌握这些原则和流程即可在实际工程中灵活应对各种频谱分析需求。

相关新闻

最新新闻

DMWr 与 MWr 对比评测:5大场景下的延迟与吞吐量权衡分析

DMWr 与 MWr 对比评测:5大场景下的延迟与吞吐量权衡分析

DMWr 与 MWr 深度对比:5大应用场景下的性能差异与选型指南在高速互连技术领域,PCIe协议作为现代计算架构的核心支柱,其演进直接影响着系统性能的边界。随着PCIe 6.0引入DMWr(Deferrable Memory Write)这一创新机制&…

2026/7/11 23:12:09
终极WindowResizer指南:3分钟掌握Windows窗口强制调整技巧

终极WindowResizer指南:3分钟掌握Windows窗口强制调整技巧

终极WindowResizer指南:3分钟掌握Windows窗口强制调整技巧 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否曾为那些顽固的Windows应用程序窗口而烦恼&#xff1f…

2026/7/11 23:12:09
AI视频生成技术解析:从原理到Dreamina Seedance 2.5实践

AI视频生成技术解析:从原理到Dreamina Seedance 2.5实践

字节跳动即将推出的 Dreamina Seedance 2.5 版本,标志着 AI 视频生成技术进入新的发展阶段。作为 CapCut 视频编辑套件中的重要组成部分,Seedance 系列一直以出色的运动连贯性和视觉一致性受到创作者关注。这次 2.5 版本的升级,预计将在提示词…

2026/7/11 23:12:09
抖音批量下载神器:5分钟快速上手无水印视频批量保存完整指南

抖音批量下载神器:5分钟快速上手无水印视频批量保存完整指南

抖音批量下载神器:5分钟快速上手无水印视频批量保存完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…

2026/7/11 23:12:09
做线上商城哪家好?2026主流工具综合横评

做线上商城哪家好?2026主流工具综合横评

艾媒咨询2026年5月发布的报告显示,2025年我国社会消费品零售总额达50.12万亿元,电商平台双十一成交总额从2009年的0.5亿元爆发式增长至16950亿元。线上零售早已不是补充渠道,而是商家的核心战场。 但问题也随之而来:做线上商城&a…

2026/7/11 23:12:09
STM32F103 DAC 控制 XL6008 升压电路:0-60V 可调电源实测,纹波低于 50mV

STM32F103 DAC 控制 XL6008 升压电路:0-60V 可调电源实测,纹波低于 50mV

STM32F103与XL6008构建0-60V超低纹波可调电源实战指南在嵌入式系统开发与电子设计领域,精确可控的电源系统往往是项目成功的关键因素。本文将深入探讨如何利用STM32F103微控制器的DAC功能精准控制XL6008升压芯片,实现0-60V宽范围可调输出,同时…

2026/7/11 23:07:09

月新闻