热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

频谱泄露

fft在分析频谱分析的时候,会有下面四个方面的误差:(1)频谱混叠:奈奎斯特定理已被众所周知了,

fft在分析频谱分析的时候,会有下面四个方面的误差:

(1)频谱混叠: 奈奎斯特定理已被众所周知了,所以几乎所有人的都知道为了不让频谱混叠,理论上采样频谱大于等于信号的最高频率。那和时域上联系起来的关系是什么呢?

采样周期的倒数是频谱分辨率,最高频率的倒数是采样周期。

设定采样点数为N,采样频率fs,最高频率fh,故频谱分辨率f=fs/N,而fs>=2fh,所以可以看出最高频率与频谱分辨率是相互矛盾的,提高频谱分辨率f的同时,在N确定的情况下必定会导致最高频率fh的减小;同样的,提高最高频率fh的同时必会引起f的增大,即分辨率变大。


(2)栅栏效应:由于dft是只取k=0,1,2,.......N-1,只能取到离散值,如果频谱之间相隔较大的话也许会将一些中间的信息丢失掉,而用fft计算dft是不可避免的,解决的办法就是增加采样点数N。这样频谱间隔变小,丢失信息的概率减小。

另外,增加0可以更细致观察频域上的信号,但不会增加频谱分辨率。

这里有补零对分辨率的影响


(3)频谱泄露:是由加窗函数引起的,同样是计算量的问题(用fft用dft必需要加窗函数),时域上的相乘,频域上卷积,引起信号的频谱失真,只有在很少的情况下,频谱泄露是不会发生的,大部分情况都会引起泄露。如x(n)=cos(2π/N),(n=0,1,2,3.....N-1,)  N点的fft则不会发生泄露,但2N,或N+1,N+2等均会引起失真,而引起失真可以从表达式上可以看出  X(K)=卷积以后的频谱在2π/N*k的      取样值,所以如果是2N的dft,为2π/2N*K,相当于N点dft结果各个值中间再取样了一个值,而2π/(N+2)*k,就与N点fft完全不一样了。解决办法,可以扩大窗函数的宽度(时域上的宽了,频域上就窄了,(时域频域有相对性),也就是泄露的能量就小了),或者不要加矩形的窗函数,可以加缓变的窗函数,也可以让泄露的能量变下。

因为泄露会照成频谱的扩大,所以也可能会造成频谱混叠的现象,而泄露引起的后果就是降低频谱分辨率。


频谱泄露会令主谱线旁边有很多旁瓣,这就会造成谱线间的干扰,更严重就是旁瓣的能量强到分不清是旁瓣还是信号本身的,这就是所谓的谱间干扰

所谓频谱泄露,就是信号频谱中各谱线之间相互影响,使测量结果偏离实际值,同时在谱线两侧其他频率点上出现一些幅值较小的假谱,导致频谱泄露的原因是采样频率和信号频率的不同步,造成周期采样信号的相位在始端和终端不连续。

  设X(t)为实际信号,T0为信号周期,f0=1/T0为信号频率,Ts为采样周期,fs=1/Ts为采样频率,L是截取的周期数,N是采样点 数,L、N均为正整数,X(t)经过长度为LT0的时间窗后得到离散序列X(n),必须满足采样频率和信号频率同步,即同步采样的要求: LT0/Ts=Nfs/f0。

  当信号X(t)的频率f0是fs/N的整数倍时,这说明在处理长度NT内有信号的K个整周期。这时由X(t)构成的以NT为周期的周期性信号是连续 的。当信号X(t)的频率f0不是fs/N的整数倍时,则在NT的处理长度内,就不是恰好为信号周期的整数倍,有X(t)以NT为周期进行周期延拓所得到 的周期性信号就出现了不连续点,造成了频谱分量从其正常频谱扩展开来,就这样形成了频谱泄露现象。

  在对信号做FFT分析时,如果采样频率固定不变,由于被采样信号自身频率的微小变化以及干扰因素的影响,就会使数据窗记录的不是整数个周期。从时域来 说,这种情况在信号的周期延拓时就会导致其边界点不连续,使信号附加了高频分量;从频域来说,由于FFT算法只是对有限长度的信号进行变换,有限长度信号 在时域相当于无限长信号和矩形窗的乘积,也就是将这个无限长信号截短,对应频域的傅里叶变换是实际信号傅里叶变换与矩形窗傅里叶变换的卷积。

  当信号被截短后的频谱不同于它以前的频谱。例如,对于频率为fs的正弦序列,它的频谱应该只是在fs处有离散谱。但是,在对它的频谱做了截短后,结果 使信号的频谱不只是在fs处有离散谱,而是在以fs为中心的频带范围内都有谱线出现,它们可以理解为是从fs频率上泄露出去的,这种现象就是频谱泄露。泄 露现象对功率谱估计及正弦分量的检测均带来有害的影响,因为弱信号的主瓣很容易被强信号泄露到邻近的副瓣所淹没及畸变,从而造成谱的模糊与失真。通过 LABVIEW信号处理实验室可以看到当边界点不连续时出现的频谱泄露的情况如下图1所示:

  

图1 信号边界点不连续时

  接下来举例说明以上的情况。假设连续信号X(t)的周期为T,现在对它进行采样,采样时间为t,采样N个点,那么T=N*t,因为f(t)的频率 f0=2*pi/T,同时又有T=N*t、fs=2*pi/t,则有f0=2*pi/N*t=fs/N。接着我们假设对一个周期采样N=32个点,则有 f0=fs/N;当对一个周期采样N1=64个点,那么N1=2*N,有f0=fs/N=fs/N1/2,即f0=2*fs/N1;同理当 N2=128,f0=4*fs/N2…

  也就是说如果采样的不是整数倍的信号周期,那么这32个点、64个点、128个点....就不是在一个整周期内采到的,那么上面的等式也就不成立了, 因此也就发生了频谱泄露。如果原始信号的频谱成份与FFT中的谱线完全一致,这种情况下采样数据的长度为信号周期的整数倍,频谱中只有主瓣,没有出现旁瓣 的原因是旁瓣正处在窗函数主瓣两侧采样频率间隔处的零分量点。如果时间序列的长度不是周期的整数倍,窗函数的连续频谱将偏离主瓣的中心,频率偏移量对应着 信号频率和FFT频率分辨率的差异,这个偏移导致了频谱中出现旁瓣,所以窗函数的旁瓣特性直接影响着各频谱分量向相邻频谱的泄露宽度。下图2是信号边界连 续时的频谱图,可以看到此时频谱未发生泄露。

  

图2 信号边界点连续时

  因此,综上所述,当采样同步时,窗口宽度等于整数个信号周期,矩形框的过零点与离散频点正好对齐,没有泄露。采样不同步时,窗口宽度不是整数个信号周期,谐波频谱分布不再是一条谱线而是在整个频域内分布,频谱之间相互干扰,出现频谱泄露。

  由以上分析可以看出,采样不同步是造成频谱泄露的根本原因,减少采样的同步误差是抑制频谱泄露的根本措施。

  三、消除频谱泄露的处理方法

  01选择合适的窗函数

  为减少频谱能量泄露,可采用不同的截取函数对信号进行截断,截断函数称为窗函数。 泄露与窗函数频谱的两侧旁瓣有关,如果两侧旁瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱,为此,在时间域中可采用不同的窗函数 来截断信号,应用在谐波测量中的窗函数很多,不同的窗函数对谐波测量的影响各不相同,即使同一个窗函数,参数选择不一样,影响也不一样,以下是6种常用的 窗函数及特性:

  

  矩形窗汉宁窗(Hanning)

  

  汉明窗(Hamming) 布莱克曼窗(Blackman)

  

  Bartlett窗(三角窗) 凯泽窗(Kaiser)

  选择合适的窗函数对于减少频谱能量泄露非常有效,以下是窗函数的选择建议:

  如果在测试中可以保证不会有泄露的发生,则不需要用任何的窗函数;

  如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小。在这种情况下,需要选择一个主瓣够窄的窗函数,汉宁窗是一个很好的选择;

  如果测试的目的更多的关注某周期信号频率点的能量值,那么其幅度的准确性则更加的重要,可以选择一个主瓣稍宽的窗;

  如果检测两个频率相近幅度不同的信号,用布莱克曼窗;

  如想要灵活的通过窗函数的形状来控制频谱波纹或阻带衰减指标,则选择凯泽窗;

  如果被测信号是随机或者未知的,选择汉宁窗。

  02加长傅里叶时间窗长度

  傅里叶时间窗长度就是参与傅里叶变换的数据点数,参与变换的数据点数越多,频谱泄露越小。对于快速傅里叶变换FFT,要求数据点数必须为2的N次幂,而对于普通离散傅里叶变换DFT则无此限制。

  以下是不同采样次数和窗宽对应的频谱泄露,从对比图上可以看出,当采样次数N和窗宽L同时增大时,频谱泄漏减小。

  

不同采样次数和窗宽对应的频谱泄露

  03利用频率同步装置减少频谱泄露

  利用硬件装置实现频率同步的装置很多,其中下图3所示的是利用数字式锁相器(DPLL)实现频率同步的框图。图中带通滤波器用来滤除噪声干扰,数字式 相位比较器把取自系统电压信号的相位和频率与锁相环输出的同步反馈信号进行相位比较。当失步时,数字式相位比较器输出与两者相位差和频率差有关的电压,经 滤波后控制并改变压控振荡器的频率,直到输入的频率和反馈信号的频率同步为止。一旦锁定,便将跟踪输入信号频率变化,保持两者的频率同步,输出的同步信号 去控制对信号的采样和加窗函数。

  

图3 频率同步数字锁相装置框图

  此种采用锁相环技术实现硬件同步采样的方法尽管可以在一定程度上减小频谱泄露,但其加大了硬件复杂度。

  04利用采样频率自适应软件算法来减少频谱泄露

  对于实际的电力信号,其频率的变化一般是比较缓慢的,相邻的几个周波的频率变化很小,在对其进行频谱分析时,针对电力信号这个特点,采用软件采样频率 自适应算法。首先以基波频率50HZ为采样基点,然后通过软件算法得到信号的实际频率,用实际频率自动的调整采样时间,可以减小同步误差,提高精度。

  对于实际电力信号,软件采样频率自适应算法如下:

  (1)设定采样间隔为Ts=78.125us(采样频率fs=12.8kHz),采样2×512+256点;

  (2)根据采样序列和采样间隔,利用改进的过零修正法计算信号的实际频率f0;

  (3)由实际频率f0调整新的采样时间间隔,可使新的采样时间窗是T0=1/f0的整数倍,并采样2×512+256点;

  (4)利用过采样法进行FFT运算得到64点(N=512而只计算64点)结果,输出基波以及各次谐波数据;

  (5)将2×512+256点采样序列和新的采样间隔作为参数,返回第(2)步。

  本算法主要有以下特点:

  (1)在第2步中采用数字滤波过零修正法。仅仅采用一般的过零线性化来计算采样频率所得到f0的误差还是较大的,由于干扰或者某些因素影响,有时甚至 会出现错误。为了解决这个问题,对采样序列进行数字滤波,一般来说基频信号最强,受其他谐波泄露的影响也最小,通过数字滤波器除基频以上的频率成分,保证 基波附近频率通过,并采用16位A/D转换芯片,可明显降低频率计算误差。

  (2)在第3步中通过软件实现对采样时间间隔(采样频率)的调整,在实际应用中,采用DSP芯片对采样时间的确定可以精确到0.01us,有很好的精度保证。

  (3)第4步中利用过采样法进行FFT运算,可以减小混叠误差,或降低对混叠滤波器的 要求。如果进行FFT运算的序列不是充分的,其fs/2以上的频率成分就会折叠到0~fc段内。对于电力信号,要求分析的最高为64次的谐 波,fc=3.2kHz,则fs~fc,2fs~3fc,3fs~5fc,4fs~7fc段频谱会折叠到0~fc段内引起折叠误差。并且在fs/2附近折 叠误差最大;但当fc一定时,提高fs会减小误差,因此,在进行信号分析时,可用过采样方法减小混叠误差。





推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
author-avatar
yuguiping123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有