我们知道,快速傅里叶变换(FFT)是信号处理的重要数学工具。一般而言,n点信号的离散傅里叶变换(DFT)的变换结果(频域)也是n个数据点。但在实际应用中,对实际信号作FFT 时,常常涉及到变换前数据需要补零(Zero padding)的问题。一些论坛里,曾看到某些专业人士从信息论的角度分析认为:“Zero padding没有增加时域信号的有效信息,因此,不会改变DFT/FFT的分辨率”。那么,补零到底有什么用,什么时候需要补零呢?对于一般的工程技术人员来说,基本就是调用现成代码或模块进行计算,很少考虑这些问题。其实,了解和搞清楚这个问题,对实际应用还是很有帮助的。接下来,我们将从以下几个方面来简要阐述如何补零以及它对频谱分析结果的影响。

一、什么是补零(Zero Padding)?

简单来说,补零(Zero Padding)就是对变换前的时域或空域信号的尾部添加若干个0,以增加数据长度。如图1所示,为含有1.00 MHz 和1.05 MHz 两个频率成分合成的正弦波实信号。

(a)

(b)

图1 时域信号的补零示意图

图1(a)中信号长度为1000个样点,采样频率为fs=100 MHz时,信号的实际时长则为10 us。在其尾部添加1000个0,即数据增加到了2000个点(时长为20us),则变为图1(b)所示的波形。

这个过程就是通常所说的补零(Zero Padding)。

二、为什么要Zero Padding?

最直接的理由就是,如果时域波形的数据样点为2的整数幂的话,FFT计算将是最高效的,硬件(FPGAs)计算FFT,就是采用了这样的Padding工作模式。那么,我们所关心的补零会不会影响计算输出的频率分辨率呢。

三、关于FFT频率分辨率

这里涉及到两种意义下的分辨率问题,一种叫“波形频率分辨率(Waveform frequency resolution”)或叫视觉频率分辨率(Visual frequency resolution);另一种则叫做“FFT分辨率”。虽然,这个分类和命名不一定是很专业的术语,但却有助于对“频率分辨率”概念的理解。在没有补零的情况下,这两个概念通常容易被混淆,因为它们是等价的。

波形频率分辨率是指可以被分辨的2个频率的最小间隔(Spacing);而FFT 分辨率则是频谱中的数据点数(The number of points in the spectrum),它是与做FFT的点数直接相关的。

因此,波形频率分辨率可定义为:

ΔRw= 1/T 7

其中,T是实际信号的时间长度。

同样,FFT分辨率可以定义为:

ΔRf= fs/Nfft

其中,fs为采样频率(the sampling frequency),Nfft为FFT的点数。ΔRf代表了FFT频率轴上的频率取值的间隔(Spacing)。

值得注意的是,可能有很好的FFT分辨率,但却不一定能够很好的把2个频率成分简单的分开。同样,可能有很高的波形分辨率,但波形的能量峰值会通过整个频谱而分散开(这是因为FFT的频率泄漏现象)。

我们知道,信号的离散傅里叶变换(DFT)或快速傅里叶变换(FFT)是对波形的任何一边补零形成的无限序列进行计算的。这就是,为什么FFT的每个频率单元(bin)都具有明显的sinc 波的形状。

波形频率分辨率1/T与一个sinc函数空值间隔(the space between nulls)是一样的。

四、例析

下面以一个具有2种频率成分的周期信号为例,说明Zero Padding与频谱分辨率的关系:

x = sin(2*pi*1000000*t)+sin(2*pi*1050000*t)

其中,f1 = 1.00MHz,f2 = 1.05MHz,频率间隔为0.05MHz。也就是说,在我们的频谱分析曲线上能看到2个频率点的峰,若2个正弦波的幅度为1伏( V),那么我们期望在1 MHz 和 1.05 MHz的频率点处的功率为10 dBm。

分以下几种情况进行分析:

1)时域信号1000个点采样,做相同样点数的FFT

图2 原始信号的功率谱(1000点 FFT)

图2中,我们并没有看见期望的两个脉冲,因为图中仅出现一个脉冲点,其幅度约为11.4 dBm。显然,这个图并不是我们想要的正确的频谱图。原因很简单,没有足够的分辨率看见两个峰值(Peaks)。

2)时域信号1000个点采样,后端补6000个零,做7000点数的FFT

我们自然想到,采用补零方式增加FFT点数,以使频率轴上能增加更多点数。如采用7000个点做FFT,即需要在原1000点信号尾部增加6000个零值(即60us时长),则原始信号变为图3(a)所示,其FFT结果如图3(b)所示。

(a)

(b)

图3 原始信号补零及功率谱(7000点 FFT)

图3中,我们也并没有看见期望的结果。仔细观察一下,此图到底告诉了我们什么呢?即通过增加更多FFT点数的做法,使得波形频率分辨率公式中的sinc函数的定义更清晰。可以看出,sinc 空值(nulls)间隔大约是0.1 MHz。

由于给出信号的两个正弦波的频率间隔是按0.05 MHz分隔的, 因此,不管我们用多少FFT点数(Zero padding),都无法解决2个正弦波的问题。

再来看一下频率分辨率ΔRf告诉了我们什么。尽管,FFT分辨率大约为14kHz(足够的频率分辨率), 而波形频率分辨率仅仅为100 kHz。两个信号的频率间隔是50kHz,所以我们受限于波形频率分辨率ΔRw。

3)时域信号7000个点采样,做7000点数的FFT

为了合理地解决这个频谱的问题,需要增加用于FFT的时域数据的长度(点数)。因此,我们直接采集波形的7000点作为输入信号,取代补零(Zero Padding)方式到 70us (7000 点) 。时间域信号及对应的功率谱分别如图4a-4b所示。

(a)

(b)

图4 按7000点采集的信号及其功率谱

通过时域数据的周期延拓,现在的波形频率分辨率ΔRw也近似为14KHz。但从频谱图中,我们还是看不见2个正弦波。1 MHz 信号已按正确的10 dBm功率值清晰地表征,而1.05 MHz 信号变宽,且未以期望的10 dBm 功率分布。这是为什么呢?

原因就是1.05 MHz处并没有FFT点的分布,原因是此处的能量被多个FFT点分散(泄露)了。

给出的例子中,采样频率是100 MHz,FFT点数为7000。频谱图中,点与点之间的间隔是14.28 kHz。1 MHz频率刚好为频率间隔的整数陪,而1.05 MHz 却不是。距1.05 MHz最近的整数倍频率为1.043 MHz 和1.057 MHz, 因此,能量被这2个FFT单元所分散。

4)时域信号7000个点采样,后端补1000个零,做8000点数的FFT。

为了解决这个问题,我们可以合理选择FFT的点数,以便这两个点能在频率轴上成为独立分开的点。由于,我们并不需要更好的波形频率分辨率,仅采用时域数据的零填充方式来调整FFT数据点的频率间隔。

给时域信号增加1000零值(10 us),使得频率间隔为12.5 kHz,这样,满足了1 MHz and 1.05 MHz两个频率都是这个间隔的整数倍。此时,给出的功率谱如图5所示。可以看出,两个频率问题得到解决,而且功率均在期望的10 dBm。

图5 补零至8000点信号的功率谱

为了进一步观察过度补零的现象,通过时域补更多的零值(10000点)来完成更多点数的FFT(确保具有正确的波形频率分辨率ΔRw),我们就可以清晰地看到FFT单元(bins)的sinc波形状,如图6所示。

图6 补零至107000点信号的功率谱

博文中计算结果和图件,均利用MATLAB进行仿真验证。如需代码,可直接联系本人。

转载自:
科学网

信号处理:傅立叶变换的波形分辨率和频率分辨率相关推荐

  1. 【音频分析】短时傅立叶变换结果为啥是对称?每个结果对应的频率是多少?

    传统艺能,又来搞傅立叶变换. 在短时傅立叶变换只有离散的一些频率,变换之后的频谱分布有哪些规律呢? 解释对称性 上公式,N是时间域的窗口采样数(即数组长度) 正变换 F(k)=∑n=0N−1f(n)∗ ...

  2. Matlab FFT变换细节(信号采样频率,FFT变换点数,频率分辨率)

    问题: 在做深度学习的故障诊断中,发现代码直接将原始信号fft之后直接将实频域信号输入网络中进行诊断,虽说效果比较不错95% 但因为输入的是双边谱且频率范围远超故障特征频率同时由于单个样本的点数只有1 ...

  3. 时域频域与傅立叶变换

    任何时域的图形,都可以转化为n个不同的频率,振幅和相位的 正选波形 叠加而得到 那么,对一个时域的函数,可以对应到到一个 频率的函数 自变量是 频率 w,因变量是对应这个频率的正弦波形的振幅 Asin ...

  4. FFT快速傅立叶变换在示波器中的用法

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识. 我们来看百度百科的解释: FFT,即为快速 ...

  5. 傅立叶变换在图像处理中的应用

    1.为什么要进行傅里叶变换,其物理意义是什么? 傅立叶变换是数字信号处理领域一种很重要的算法.要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义.傅立叶原理表明:任何连续测量的时序或信号,都可以表 ...

  6. [转载]傅立叶变换在图像处理中的作用

    原文地址:傅立叶变换在图像处理中的作用作者:白屋顶黑乌鸦 从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换.它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分.在不同的研究领域,傅里叶 ...

  7. 关于频谱分析中两个重要指标:频率分辨率和时间分辨率的理解及计算

    当今最常见时频分析方法主要有四种,分别是基于短时傅立叶变换法,基于小波变换法,Choi-Williams分布法和Hilbert-Hang变换法,经实验测得Hilbert-Huang具有最高的频率分辨率 ...

  8. 图像傅立叶变换的物理意义

    原文:http://blog.csdn.net/dadaadao/article/details/6093882 傅立叶变换可以看做拉普拉斯变换的特殊形式.拉氏变换就是将原时域函数乘上一个与 σ相关的 ...

  9. 五、卷积与傅立叶变换

    有些东西没有显示出来,相看的可以移步 一.卷积 1.一维的卷积 连续: 在泛函分析中,卷积是通过两个函数f(x)f(x)和g(x)g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(我 ...

最新文章

  1. 二、 创建3D场景的一般步骤
  2. 用表格布局2个链接6个图片
  3. react 开发知识准备
  4. Java编程作业体会_Java作业的几点总结感想
  5. 攀爬者(洛谷P5143题题解,Java语言描述)
  6. mysql主机地址会什么问题_mysql的主机地址
  7. 清理tomcat服务器日志文件,Tomcat日志配置与清理
  8. Windows中的SysWow64文件夹
  9. Luckysheet导出excel
  10. 服务器游戏列表为空,游戏服务器列表为空
  11. Python爬取彼岸图4k壁纸,想要什么类型的壁纸就输入什么壁纸,太方便了。
  12. NodeMCU入门,烧程序点灯。
  13. 批量替换Scene中的Prefab
  14. iOS 根据IP获取位置
  15. 我的世界java版地图结构_我的世界地图种子竟然有42亿个 那些神奇的建筑都是怎么生成的...
  16. 雨林木风GHSOT_XP_SP3装机版 V0912 【雪豹】
  17. Elasticsearch:Search-as-you-type 字段类型
  18. 无线网卡怎么样?无线网卡怎么安装?
  19. rsyslogd 重启_RE: 服务器定时重启
  20. 期货资管分仓跟单系统的开发搭建

热门文章

  1. a few ideas for cambridge career
  2. ES6中的Promise使用方法与总结
  3. “Hello World!”团队第二次会议
  4. 第3章 简单爬虫架构
  5. Javascript String类的属性及方法
  6. android开发之图表
  7. 转:Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
  8. 怎么设置tomcat管理员的用户名和密码
  9. DispatcherServlet作用
  10. 第六周 Word目录和索引