zoukankan      html  css  js  c++  java
  • FFT造成的频谱混叠,栅栏效应,频谱泄露,谱间干扰

    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完全不一样了。解决办法,可以扩大窗函数的宽度(时域上的宽了,频域上就窄了,(时域频域有相对性),也就是泄露的能量就小了),或者不要加矩形的窗函数,可以加缓变的窗函数,也可以让泄露的能量变小。因为泄露会照成频谱的扩大,所以也可能会造成频谱混叠的现象,而泄露引起的后果就是降低频谱分辨率。

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

  • 相关阅读:
    python单线程,多线程和协程速度对比
    python redis模块的常见的几个类 Redis 、StricRedis和ConnectionPool
    saltstack安装部署以及简单实用
    python编码详解--转自(Alex的博客)
    老铁,这年头不会点Git真不行!!!
    个人阅读&个人总结
    提问回顾
    结对项目
    个人作业Week3-案例分析
    个人作业Week2-代码复审
  • 原文地址:https://www.cnblogs.com/fall-li/p/4418500.html
Copyright © 2011-2022 走看看