大白话讲解信号处理中的频谱泄露

一、什么是频谱泄露?

  频谱泄露与 傅里叶变换尤其是离散时间傅里叶变换有关,对于频谱泄露,通常的解释是这样的:
  信号为无限长序列,运算需要截取其中一部分(截断),于是需要加窗函数,加了窗函数相当于时域相乘,于是相当于频域卷积,于是频谱中除了本来该有的主瓣之外,还会出现本不该有的旁瓣,这就是频谱泄露!为了减弱频谱泄露,可以采用加权的窗函数,加权的窗函数包括平顶窗、汉宁窗、高斯窗等等。而未加权的矩形窗泄露最为严重。
  为了说明频谱泄露,一下子引入了时域、频域、窗函数、卷积、主瓣、旁瓣等等抽象的概念。
  频谱泄露有这么复杂吗?频谱泄露到底是什么意思?
  一句话,频谱泄露就是分析结果中,出现了本来没有的频率分量。比如说,50Hz的纯正弦波,本来只有一种频率分量,分析结果却包含了与50Hz频率相近的其它频率分量。
  更简单的描述是:分析结果与实际不一致!

二、为何会出现频谱泄露?

  我们把无限长序列分为两种情况:

1、无限长序列为非周期信号

  非周期的无限长序列,任意截取一段有限长的序列,都不能代表实际信号,分析结果当然与实际信号不一致!

2、无限长序列为周期信号

  周期的无限长序列,假设截取的是正好一个或整数个信号周期的序列,这个有限长序列就可以代表原无限长序列,如果分析的方法得当的话,分析结果应该与实际信号一致!
  第一种情况,我们可以这样理解:
  你分析的内容根本就不能代表实际内容,结果当然不一致,更准确的说法,结果是错误的,造成错误结果的原因是分析方法是错误的!
  第二种情况,我们作了两个假设,第二个假设是成立的,该假设基于伟大的傅里叶作出的论断!
  那么,如果第一个假设也成立,是不是就不会发生频谱泄露呢?
  答案是肯定的!
  从无限长序列中截取一个或整数个周期,我们称为整周期截断,反之,称为 非整周期截断
   整周期截断,不会造成频谱泄露!
  非整周期截断,必然造成频谱泄露!
  换言之:
   整周期截断是不发生频谱泄露的充分且必要条件
  或:
   非整周期截断是发生频谱泄露的充分且必要条件
  为什么非整周期截断就会发生频谱泄露呢?
    
     


   
      原因实际上与第一种情况是类似的。如图1所示,截取分析的有限长序列,傅里叶变换仍然将信号当成无限长序列,对于有限长序列,又是如何当成无限长呢?
  这里采用了一种被称为周期延拓的技术,所谓周期延拓,就是把截取的有限长序列当成是无限长序列的一个周期,然后不断的复制,得到一个新的无限长序列。
      
      
     

      
如图2所示,从图1所示无限长序列中截取的有限长序列,经过周期延拓后,得到一个新的无限长序列,显然,这个新的序列与原序列是不一样的!
  图2的信号与图1的信号不同,分析得到的频谱自然也不同!不同之处在于,图1是单一频率信号,只有一根谱线,而图2中,除了图1信号包含的这根谱线(不妨称为主谱线)外,出现了其它频率的谱线,通常,这些谱线要比主谱线短很多,如果把这些原信号不包含的谱线理解为是主谱线泄露出来的,那么,这种现象就被称为频谱泄露!
  采用合适的窗函数(常见的窗函数有汉宁窗、三角窗、海明窗和高斯窗等等)可以一定程度上抑制频谱泄露。
  窗函数的概念,非常抽象,然而,窗函数的作用,是非常有限的,我们可以这样理解:
  如图2中的信号,由于突然截断造成周期延拓时两个周期相邻处出现了信号突变,这种突变,代表的是信号包含了高次谐波。加上合适的歘窗函数,可以把这个突变变得圆滑一些,从而抑制高次谐波。
  但是,我们也可以这样想,假设图2的信号就是真实信号,那么,加上这样的窗函数反而得到了错误的结果!
  因此,避免频谱泄露的根本还是要从源头出发,尽可能做到准确的整周期截断,这种情况下,窗函数可以选择最简单的矩形窗。

三、正确处理频谱泄露

  造成频谱泄露的原因在于傅里叶变换的输入信号不能准确的、完整的代表被分析信号,输出产生的一种误差,这种误差可以通过加合适的窗函数或延长时间窗得以改善,当输入信号的不完整性达到一定程度,输出是一种错误的结果。
  对于周期信号,整周期截断是不发生频谱泄露的充分且必要条件,抑制频谱泄露应该从源头抓起,尽可能进行整周期截断。
   WP4000变频功率分析仪通过频率测量和同步电路,保证了信号的整周期截断,傅里叶时间窗包含一个或整数个信号周期,有效的避免了频谱泄露。
  作者:AnyWay中国
  湖南银河电气有限公司(http://www.vfe.cc/)




  • 24
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嗨!大白话讲解Promise(一)啊!好的,我来给你解释一下。 首先,我们要知道Promise是JavaScript处理异步操作的一种方式。异步操作就是那些不会立即返回结果的操作,比如从服务器上获取数据或者执行耗时的任务。在以前,我们通常使用回调函数来处理异步操作,但是回调函数的嵌套会导致代码变得难以阅读和维护。而Promise就是为了解决这个问题而出现的。 Promise可以被看作是一种代表了未来结果的对象。它有三个状态:pending(进行)、fulfilled(已成功)和rejected(已失败)。当一个异步操作开始执行时,它的状态是pending;当操作成功完成时,它的状态变为fulfilled,并且会返回一个值;当操作失败时,它的状态变为rejected,并且会返回一个错误。 使用Promise的好处是可以更清晰地编写异步代码。我们可以通过调用Promise的then()方法来处理成功的情况,通过调用catch()方法来处理失败的情况。这样就避免了回调函数的嵌套,代码更加易读和易于维护。 当我们创建一个Promise对象时,我们需要传入一个执行器函数,这个函数会立即执行。执行器函数接受两个参数:resolve和reject。在执行器函数,我们可以执行异步操作,并在合适的时候调用resolve或reject来改变Promise的状态。 我来举个例子来说明一下: ```javascript const promise = new Promise((resolve, reject) => { // 这里可以执行异步操作 // 如果操作成功,调用resolve并传入结果 // 如果操作失败,调用reject并传入错误 }); promise.then((result) => { // 处理操作成功的情况 }).catch((error) => { // 处理操作失败的情况 }); ``` 这就是Promise的简单介绍,望能帮到你!如果你还有其他问题,尽管问吧!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值