美文网首页
补零与频谱泄露

补零与频谱泄露

作者: 笑看古今风流 | 来源:发表于2018-01-14 23:29 被阅读260次

    频谱泄露

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


    造成频谱泄露的原因在于傅里叶变换的输入信号不能准确的、完整的代表被分析信号,输出产生的一种误差,这种误差可以通过加合适的窗函数或延长时间窗得以改善,当输入信号的不完整性达到一定程度,输出是一种错误的结果。
      对于周期信号,整周期截断是不发生频谱泄露的充分且必要条件,抑制频谱泄露应该从源头抓起,尽可能进行整周期截断。
    如x(n)=cos(2π/N),(n=0,1,2,3…..N-1,) N点的fft则不会发生泄露,但2N,或N+1,N+2等均会引起失真,而引起失真可以从表达式上可以看出 X(K)=卷积以后的频谱在2π/Nk的取样值,所以如果是2N的dft,为2π/2NK,相当于N点dft结果各个值中间再取样了一个值,而
    2π/(N+2)*k,就与N点fft完全不一样了。


    解决办法:可以扩大窗函数的宽度(时域上的宽了,频域上就窄了,(时域频域有相对性),也就是泄露的能量就小了)或者不要加矩形的窗函数,可以加缓变的窗函数,也可以让泄露的能量变小。因为泄露造成成频谱的扩大,所以也可能会造成频谱混叠的现象,而泄露引起的后果就是降低频谱分辨率。
      频谱泄露会令主谱线旁边有很多旁瓣,这就会造成谱线间的干扰,更严重就是旁瓣的能量强到分不清是旁瓣还是信号本身的,这就是所谓的谱间干扰。


    栅栏效应

    栅栏效应描述的是信号采样时只能得到采样点的信息,而忽略了采样间隔中数据信息的现象。不管是时域采样还是频域采样,都有相应的栅栏效应,只是当时域采样满足采样定理时,栅栏效应不会有什么影响。而频域采样的栅栏效应则影响很大,“挡住”或丢失的频率成分有可能是重要的或具有特征的成分,使信号处理失去意义。减小栅栏效应可用提高采样间隔也就是频率分辨力的方法来解决。间隔小,频率分辨力高,被“挡住”或丢失的频率成分就会越少。但会增加采样点数,使计算工作量增加。

    连续时间信号经采样、截断后的序列为Xn(n),其频谱函数XN(ejw),并不随序列末端补零而改变,信号的频分辨率为Fs/N.序列末端补零只能提高信号频谱显示的分辨率。换句话说,如果连续时间信号在离散化或时域加窗截断过程中,由于频谱泄漏或混叠等原因已造成信号频谱中信息的失真,则无论怎么补零做DFT,都无法再恢复已损失的信息。
    提高信号的频率分辨率只有提高信号的采样频率或增加序列的截断长度
    N(信号的持续时间加长)。

    为什么FFT时域补0后,经FFT变换就是频域进行内插?
      应该这样来理解这个问题:
    补0后的DFT(FFT是DFT的快速算法),实际上公式并没变,变化的只是频域项(如:补0前FFT计算得到的是m2pi/M处的频域值,而补0后得到的是n2pi/N处的频域值),M为原DFT长度,N变成了补0后的长度。将(-pi,pi)从原来的M份变成了N份,如果将补0前后的这些频域值画在坐标上,其中m2pi/M和n2pi/N重合的部分,它所对应的频域值(变换后的值)是不变的,而在原来的M份里多了(N-M)份的分量,即在频域内多了(N-M)份插值,这样理解就清楚了。


    补零好处有二:
      其一是,可使数据点数为2的整次幂,以便于使用FFT
      其二,对原数据起到了做插值的作用,一方面克服“栏栅”效应,使谱的外观平滑,
      另一方面,由于对数据截短时引起的频域泄漏,有可能在频谱中出现一些难以确认的谱峰(见《数字信号处理》课本147页图6-13),补零后有可能消除这种现象。


    FFT补零:
      N点DFT的频谱分辨率是2π /N。栅栏效应一节指出可以通过补零观察到更多的频点(见《数字信号处理》课本148页),但是这并不意味着补零能够提高真正的频谱分辨率。这是因为x[n]实际上是x(t) 采样的主值序列,而将x[n]补零得到的x’[n] 周期延拓之后与原来的序列并不相同,也不是x(t)的采样。因此已是不同离散信号的频谱。对于补零至M点的x’的DFT,只能说它的分辨率2π /M仅具有计算上的意义,并不是真正的、物理意义上的频谱。频谱分辨率的提高只能在满足采样定理的条件下增加时域有效的采样长度来实现(见《数字信号处理》课本146页),而补零并不是时域信号的有效数据。

    补零与离散傅里叶变换的分辨率

    离散傅里叶变换(DFT)的输入是一组离散的值,输出同样是一组离散的值。在输入信号而言,相邻两个采样点的间隔为采样时间Ts。在输出信号而言,相邻两个采样点的间隔为频率分辨率fs/N,其中fs为采样频率,其大小等于1/Ts,N为输入信号的采样点数。这也就是说,DFT的频域分辨率不仅与采样频率有关,也与信号的采样点数有关。那么,如果保持输入信号长度不变,但却对输入信号进行补零,增加DFT的点数,此时的分辨率是变还是不变?
      答案是此时分辨率不变。从时域来看,假定要把频率相差很小的两个信号区分开来,直观上理解,至少要保证两个信号在时域上相差一个完整的周期,也即是相位相差2*pi。


    举个例子,假定采样频率为1Hz,要将周期为10s的正弦信号和周期为11s的正弦信号区分开来,那么信号至少要持续110s,两个信号才能相差一个周期,此时周期为10s的那个信号经历的周期数为11,而11s的那个信号经历的周期书为10。转化到频域,这种情况下,时域采样点为110,分辨率为1/110=0.00909,恰好等于两个信号频率只差(1/10-1/11)。如果两个信号在时域上不满足“相差一个完整周期“的话,补零同样也不能满足“相差一个完整周期”,即分辨率不发生变化。另外,从信息论的角度,也很好理解,对输入信号补零并没有增加输入信号的信息,因此分辨率不会发生变化。


    那么,补零到底会带来什么样的影响呢?因为DFT可以看做是对DTFT的采样,补零仅是减小了频域采样的间隔。这样有利于克服由于栅栏效应带来的有些频谱泄露的问题。也就是说,补零可以使信号能在频域被更细致地观察。如果不满足上述“至少相差一个完整周期”的要求,即便是如DTFT一般在频域连续,也无法分辨出两个信号。
      那么,影响DFT分辨率最本质的物理机制是什么呢?在于DFT的积累时间,分辨率为积累时间T的倒数。这点从数学公式上可以很容易得到:

    举个例子说,如果输入信号的时长为10s,那么无论采样频率为多少,当然前提是要满足奈奎斯特定理,其分辨率为1/10=0.1Hz。
    数据后面补零—-不能提高信号的频率分辨率
      序列末端补零后,尽管信号的频谱不会变化,但对序列做补零后L点
    DFT后,计算出的频谱实际上是原信号频谱在[0,2*pi)区间上L个等间隔采样,从而增加了对真实频谱采样的点数,并改变了采样点的位置,这将会显示出原信号频谱的更多的细节。故而数据后面补零可以克服栅栏效应。数据间隔补零不能提高信号的频率分辨率数据插值相当于提高了信号的采样率,可以提高信号的频率分辨率。

    相关文章

      网友评论

          本文标题:补零与频谱泄露

          本文链接:https://www.haomeiwen.com/subject/bwnloxtx.html