当前位置: 首页 > news >正文

FFT 工程关键点总结(采样分辨率 / 频点 / 相位)

本文只讨论 FFT 在嵌入式与工程中的实际含义,不涉及数学推导。


一、采样分辨率是什么?

1. 先定义所有变量(很重要)

符号含义
fs采样率(Hz),每秒采样多少次
NFFT 点数(一次参与 FFT 的采样点数量)
T采样时间长度(秒)
Δf频率分辨率(Hz)

2. 它们之间的关系

采样时间长度
T = N / fs
  • N个点
  • 每秒采fs
  • 一共覆盖T秒的数据

频率分辨率
Δf = 1 / T = fs / N

含义:

FFT 能区分的最小频率间隔


3. 工程本质结论

  • fs决定你能看到多高的频率
  • N决定你看了多久
  • Δf决定你能分多细

频率分辨率的本质是:采样时间长度,而不是采样率本身


二、FFT 频点对应的是什么?

1. 再定义变量

符号含义
kFFT 频点序号(整数,从 0 开始)
Δf频率分辨率(Hz)
f(k)k个频点所代表的实际频率(Hz)

2. 频点与频率的对应关系

f(k) = k × Δf

含义:

  • FFT 并不是“算出一个频率”
  • FFT 是把频率范围按 Δf 分成很多桶
  • k个桶的中心频率是k × Δf

3. 具体工程例子

已知条件
fs = 2048 Hz N = 1024
计算
T = N / fs = 0.5 s Δf = fs / N = 2 Hz
对应关系
k = 0 → 0 Hz k = 1 → 2 Hz k = 2 → 4 Hz k = 25 → 50 Hz

可以理解为:1 个频点代表 2 Hz 宽度的频率区间


4. FFT 能不能“算准”的唯一判断条件

定义变量
符号含义
f_sig实际信号频率(Hz)
判断条件
f_sig / Δf = 整数
  • ✔ 是整数 → 能量集中在一个频点
  • ✘ 不是整数 → 能量分散到多个频点(频谱泄漏)

三、FFT 中的相位是怎么计算的?

1. FFT 输出数据的含义

FFT 在每个频点k上输出一个复数:

X[k] = Re[k] + j · Im[k]
符号含义
X[k]k个频点的 FFT 结果
Re[k]实部
Im[k]虚部
j虚数单位

2. 相位的计算方式

φ[k] = atan2( Im[k], Re[k] )
符号含义
φ[k]k个频点的相位(弧度)
atan2()四象限反正切函数

3. FFT 相位的真实物理意义

FFT 计算得到的相位表示的是:

该频率分量,相对于“采样起点”的相位

其中:

项目说明
采样起点DMA 开始采样的第一个点
相位零点并不是信号的物理零相位

4. 为什么单通道 FFT 相位通常没意义?

因为相位包含:

  • 采样起点偏移
  • 滤波器群延时
  • ADC / 数字链路延时

所以:

单通道 FFT 相位 → 只用于稳定性判断

5. 工程中“有意义的相位”

① 通道间相位差
符号含义
φ1通道 1 的相位
φ2通道 2 的相位
Δφ = φ2 − φ1

② 谐波相对基波相位
符号含义
φ1基波相位
φn第 n 次谐波相位
Δφn = φn − n · φ1

四、工程最终结论(纯结论版)

采样时间 T = N / fs 频率分辨率 Δf = 1 / T = fs / N 频点频率 f(k) = k × Δf FFT 能否算准:f_sig / Δf 是否为整数 FFT 相位只能使用“相对相位”

五、一句话总结

FFT 的本质是:用 N/fs 秒的数据,把频率按 fs/N 分桶;
是否准确,只取决于你看得够不够久,以及频率是否对齐桶中心。

http://www.zskr.cn/news/121092.html

相关文章:

  • AI应用架构师视角:企业数据中心合作伙伴的选择策略
  • 不止于 Dify:为什么我在部署私有 LLM 时选择了它?
  • QCoreApplication::aboutToQuit
  • KotaemonLeetCode刷题伴侣:思路提示与优化建议
  • 【AI平台核心架构设计】
  • QObject::startTimer: Timers can only be used with threads started with QThread
  • 向量数据库常用SQL语句
  • 47、深入了解 NNTP 协议及其应用
  • 我发现动态病例生成补足医学教育短板,三甲医院培训效率翻倍
  • 我发现扩散模型生成合成基因数据,罕见病跨境早筛灵敏度翻倍
  • 10、TCP/IP 网络配置全攻略
  • 若依报错Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ property manually
  • BXMya BENTLY 3500/94 145988-01 机架接口模块
  • 谁在捧杀豆包手机?
  • Kotaemon播客脚本生成:节目大纲与台词
  • 单片机基础知识(八)8080时序
  • web城乡居民基本医疗信息管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 基于Kotaemon的政策法规智能查询系统
  • 文心大模型5.0震撼来袭:AI产品经理必读的技术实践与设计攻略!
  • 昆明别墅装修公司推荐:避坑Top3,住建局数据选这3家立省20万!
  • 昆明装修公司推荐:实地探访12盘揭晓榜首,95%设计落地+终身质控
  • 《逆行人生》如何用个人专利权,重塑资本世界
  • Kotaemon更新日志:最新v1.2版本带来哪些关键升级?
  • 扩大内需与城乡规划关系
  • 59、数据访问与绑定技术全面解析
  • 2、深入解析Flex与Bison:从原理到应用
  • ImHex 十六进制编辑器 v1.38.0 多语便携版
  • 16、macOS Mojave实用技巧与优化指南
  • 红外热像仪光学性能综合测试系统在多领域中的作用
  • 6、Bison解析器与抽象语法树计算器的实现与优化