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

揭开FFT时域加窗的奥秘

FFT – Spectral Leakage

假设用于ADC输出数据分析的采样点数为N,而采样率为Fs,那我们就知道,这种情况下的FFT频谱分辨率为δf,那么δf=Fs/N。如果此时我们给ADC输入一个待测量的单频Fin,如果此时Fin除以δf不是整数,就会产生频率泄露。要尽可能保证测得的FFT不会产生频谱泄露,有两种方式进行处理,相干采样和时域加窗

(1)相干采样

假设M是我们需要采样的输入信号的周期数,那么M/Fin=N/Fs,也就是两个时间长度是一致的,也就是Fin/ Fs=M/N,这个比值要能够被表达成为有理数(也就是整数或者分数)N必须是2的幂数(这是从蝶形运算的角度考虑的)。MN还必须要互为质数(这样可以避免重复采样相同位置的,重复采样周期信号相同的位置点不会获得额外的信息,因此不推荐M非素数(素数,除了1和它本身以外不再有其他因数的自然数))。如果选择了M/N为非互质时,将导致信号周期性的量化,以及仅有少量的量化步进被测试。量化周期性的重复,建立了一个线谱,它是一个令人费解的实频率线(如下图2所示在谐波镜像之下的红线,这是由ADC的非线性导致的,而黑色痕迹则是因为量化周期的重复性导致的,也就是M/N为非互质导致的,图3是采用相干采样得到的结果

从相干采样的描述来看,相干采样的输入信号Fin和采样频率Fs必须是同步信号。另外相干采样可以确保信号功率仅在一个FFT bin(也就是频谱分辨率)之中。

图1 想干采样定理:
在这里插入图片描述

图2 重复相同位置采样导致的谐波痕线抬升:在这里插入图片描述

图3 相干采样改善还原了真实的非线性特性:
在这里插入图片描述

(2)时域加窗

如果采样的波形是非连续的,也就是采集的样本不是信号的整数倍周期,那么就需要消除这种现象,从而减小FFT的频谱泄露(注意不是完全改善),TI的官方文档为我们展示了这一现象,如下图3所示,对信号进行了时域加窗,加窗之后频谱泄露有所减小

图4 非周期采样频谱泄露展示:
在这里插入图片描述

很明显No window(矩形窗)的旁瓣非常高,也就意味着,它的泄露抑制的不是很好。但是频率分辨率准确,幅值精度低。

  • 不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截短产生了能量泄漏,而用 FFT 算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗 主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度 最低,但幅值识别精度最高)
  • Hanning(汉宁窗)是使用最广泛的一种窗函数,除此之外还有,Hamming(海明窗),Flat-top 窗和 Balckman-Harris 窗,矩形窗产生最窄的谱线,加 Flat-top 窗谱线最宽。旁瓣的影响和精确频率分辨率 有时候是不可兼得的。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;Flat-top 窗主瓣 宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)

图5 TI官方的不同窗函数的频谱特性:
在这里插入图片描述

图6 不同应用使用的窗函数:
在这里插入图片描述

  • Processing loss(dB),也叫做相干功率增益,对一个信号进行加窗操作之后将会减少信号在时域上的幅值,尤其是在窗函数的左右边界,这种幅度的减小会引入幅度误差,每个窗函数的这种处理损失不太一样,TI已经列于下表之中,矩形窗不存在损失

  • Scalloping loss(dB),由于FFT变换的结果是离散的,那么信号的频率有可能会落在两个FFT bin之间,这样原本的功率就会被分散到两个bin上,从而相对于原先的功率就会产生损失,这就叫做栅栏损失

在这里插入图片描述
在这里插入图片描述

图7 不同窗函数使用的处理误差:
在这里插入图片描述

图8 不同窗函数的形状:
在这里插入图片描述

TIADC分析软件,内部已经对加窗处理损失进行修正。

大家可自行使用FFT分析软件分析一下非整周期采样使用各种窗口的结果,加深理解Highest side lobe level、Processing loss、Scalloping loss以及Half main lobe width。应用时域加窗技术会影响频谱分辨率

http://www.lryc.cn/news/368926.html

相关文章:

  • 【AI基础】第二步:安装AI运行环境
  • 【MySQL】聊聊唯一索引是如何加锁的
  • k8s-CCE使用node节点使用VIP--hostNetworkhostPort
  • 18、关于优化中央企业资产评估管理有关事项的通知
  • AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型
  • 速盾:图片cdn加速 免费
  • 贪心算法例子
  • vivado HW_ILA_DATA、HW_PROBE
  • refault distance算法的一点理解
  • 软件安全技术【太原理工大学】
  • 异常(Exception)
  • 一文者懂LLaMA 2(原理、模型、训练)
  • MySQL 存储函数及调用
  • 设计模式七大原则-单一职责原则SingleResponsibility
  • msfconsole利用Windows server2008cve-2019-0708漏洞入侵
  • Reinforcement Learning学习(三)
  • hw meta10 adb back up DCIM
  • Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)
  • 从河流到空气,BL340工控机助力全面环保监测网络构建
  • 零拷贝技术
  • Flutter_Android上架GooglePlay_问题
  • 【Java】解决Java报错:NumberFormatException
  • 视觉大模型(VLLM)学习笔记
  • 【软考的系统分析师的考题考点解析2025】
  • JavaScript前端技术入门教程
  • 类和对象(上续)
  • 【C++初阶学习】第十三弹——优先级队列及容器适配器
  • Java(十七)---ArrayList的使用
  • 实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》
  • 定个小目标之刷LeetCode热题(12)