首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >FFT 中零填充的若干问题

FFT 中零填充的若干问题

作者头像
云深无际
发布2026-01-07 12:53:40
发布2026-01-07 12:53:40
1420
举报
文章被收录于专栏:云深之无迹云深之无迹

零填充的公式与作用

FFT 分辨率定义

:采样率

:采样点数(实际采到的点数,不包含零填充)

其中FFT 的分辨率完全取决于采样时间长度 ,和采样率 ,与零填充无关。

零填充的操作

如果原始信号长度是 ,我们在末尾补零到 点(通常取到 2 的幂,比如 或 ):

FFT 之后的频率刻度变成:

零填充的效果

频率分辨率 Δf 并没有变: 依旧是 ,因为“有效采样时长”没变。

只是增加了插值点:频谱曲线变得平滑,看起来像“更细”;实质是对原本 FFT 结果做了sinc 内插**。

方便峰值估计:QIFFT(抛物线插值)+ 零填充,能更稳地找到峰值;但不能替代真正增加采样时长。

一些直觉

采 1 秒的信号,不管零填充到 4k 还是 64k 点,频率分辨率始终是 1 Hz;只是零填充后,频谱图上的线条更密,看起来“平滑”,便于肉眼或算法做峰值检测,实际上要真的让分辨率更细,必须采更久

零填充 = 频谱插值 ≠ 增加分辨率

做一个小可视化对比:同样 1 秒、1 kHz 正弦波,分别用 1024 点 FFT 和 1024 点+零填充到 8192 点 FFT,画出来两张图,直观展示“曲线更平滑,但 Δf 没变”

image-20250920082326123
image-20250920082326123

image-20250920082326123

图里清楚地展示了 零填充的效果

橙色曲线(无零填充,N=8000):频谱点很稀疏,每隔 1 Hz 才有一个采样点。

蓝色曲线(零填充到 M=8192):频谱曲线变得平滑,点数更密,看起来像“更精细”。

但关键是:

主峰依然宽度相同,旁瓣位置没变;频率分辨率 Δf 仍然是 1 Hz,因为实际采样时长还是 1 秒。

零填充 = 插值绘图,让曲线更平滑;不能改变频率分辨率;要真想更细,还说只能采更久(增加 N 点数)。

做一个“同样 Δf=1 Hz,但是零填充和非零填充下的 QIFFT 基频估计对比”,展示为什么它能帮忙“读取峰更准”

image-20250920082355013
image-20250920082355013

真实频率:1000.37 Hz

无零填充 (N=8000):QIFFT 估计 ≈ 1000.322 Hz,已经挺准,但和真实值有约 0.05 Hz 的偏差。

零填充到 65536 点:QIFFT 估计 ≈ 1000.370 Hz,几乎与真实值完全一致。

零填充 不增加分辨率(Δf 仍是 1 Hz),但是:它让谱线在峰附近更平滑、密集;配合 QIFFT 之类的插值算法时,能更精确地“锁定峰值”。

所以工程里常见做法是:用 Hann/Blackman 窗减少泄漏;零填充到 4N、8N;再做 QIFFT → 获得比 Δf 更细的频率估计。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FFT 分辨率定义
  • 零填充的操作
  • 零填充的效果
  • 一些直觉
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档