FFT快速傅里叶变换中的误差来源

    最近在重新学习信号处理的入门知识,看到一篇比较好的英文课程作业,特在此挑主要内容翻译做一个记录。

    该文是TU Kaiserslautern, Germany 大学Stefan Scholl 写的一篇题目为《Exact Signal Measurements using FFT Analysis

》的文章,需要原文的可以自行寻找或者在邮箱留言就可,下面开始文章主体内容:

    在原文中有一个单词bin多次出线,查了一下资料不知道如何准确翻译,但具体指代的就是FFT变换结果之间的谱线,故翻译过程中采用谱线进行指代,存在分歧的地方会标注英文原文。

    

    1、介绍和动机

    这篇教程主要描述如何用FFT精确地测量信号功率(signal power)。在时域中计算信号的功率非常容易,但是在某些情况下这么做却存在一些问题:例如当信号存在若干不同频率的信号风量和宽带噪声的时候,而这时候可以在频域中单独测量这些成分的功率或者测量他们之间的信噪比SNR。但是由于FFT变换过程中加窗等操作带来的误差,直接对信号进行FFT并不能获得准确的信号功率。这篇文章主要描述不同的影响因素,以及他们怎样可以被避免或者补偿。文章的最后会详细说明如何通过FFT精确的测量信号和噪声的功率。

    2、基本内容

    2.1实值信号的FFT

    在这篇文章中,假设实值信号通过通过N点FFT变换成了间距为的功率谱。

    在对信号进行N点FFT变换之后,频谱是对称的,所以频谱的前半部分就包含了频谱中所有的必要信息,在实际分析过程中可以直接忽略后半部分。为了符合实际情况,需要对频谱中除了(第一个)直流分量以外的其他赋值的大小乘2。通过这么变换之后得到了FFT产生的RMS(root mean squared均方根)谱。再将得到的结果进行平方就得到了信号的功率谱。需要注意的是,尽管信号经过的N点FFT变换,但由于只保留了一半的结果,所以功率谱中只有N/2个点的数据。

    通过分析的信号表示通过电阻R的电压,那么通过前述算法得到的结果可以通过对数变换转换为dBm值(译注:之前学习的时候一直不知道为什么要多此一举进行对数变化得到非线性的分贝值,最近看网上的说法应该是通过对数变化可以减少强弱信号时间的对比,更方便在图表上进行表示

    上述过程的具体步骤如下图所示:

    

    3.变换中引起的误差

    下文中将会对FFT变换引起的幅值误差进行描述。有些误差只影响窄带信号(例如:sine信号),另外一些对宽带信号和噪声都有影响。 

    3.1泄露(leakage)

    谱泄露指的是信号的能量被分散到多个能量谱线当中去了,例如一个正弦信号没有表示成一个尖峰,而更像一个凸起。(译注:看这幅图的时候有一个重要的事实常常被忽略,即FFT进行的是离散傅里叶变换,在频谱上也仅仅在f/N上有意义及存在数值,而一般画图中采用plot而不是stem,个人认为更多是在数据点较多的情况下刚容易观察和理解) 频谱泄露是由于FFT只分析样本信号的一部分(N点),通过这一部分信号我们希望西区整体信号的特征,而实际上FFT输出额是一个由N点样本重复拼接起来的信号。通常来说这个拼接信号在边界点处处在不连续性,因此FFT的输出频谱代表的并不是并不是“真实”信号。

        


    对于信号来说,只有那些周期(或者周期的倍数)刚好和信号长度相同时,频谱泄露才不会发生。虽然理论上可以根据信号调整某数转换器的采用频率得到,但在实际中很难进行操作,因此我们假设在分析过程汇总信号泄露总是存在的。

    为了一时泄露,可以在对信号进行FFT变换前进行加窗。常用的窗函数有汉宁窗(hann)(最常使用),flattop window (为了进行准确的幅值测量)或者不加窗,或者说加矩形窗(针对噪声测量),加窗后频谱的泄漏量可以通过最高旁瓣(highest sidelobe)的dB值和dB/octave  的衰退量(fall off)进行测量。    

    对于精密测量来说,只要泄露没有影响频谱成分例如:spurs和noise,就不算是一个大问题。

    3.2相干功率增益(Coherent power gain

    如下图所示,对一个信号进行加窗操作之后将会减少信号在时域上的幅值,尤其是在窗函数的左右边界。


    由于时域上幅值减伤引起的频谱幅值误差成为相干功率增益(CPS-coherent power gain)。“增益”的说法可能会引起一些歧义,因为CPG实际上面熟哦的是信号功率的损失,下图表示了使用不同窗函数后进行FFT变换带来的功率损失。每一个窗函数都一个确定的CPG。常用窗函数的CPG值可以在3.6节中找到。将这部分增益加到FFT变换结果就可以补偿功率损失。如果没有使用窗函数(或者说使用了矩形窗),那么就不存在相干功率损失,CPG值为1或者0dB。


    3.3栅栏损失(Scalloping loss or picket pence effect)

    由于FFT变换的结果在频域上是离散的,那么信号的频率就可能落在两条谱线之间。如果发生了这种情况,那么显示的功率就会因为功率被分散到两根谱线上而减少,这部分损失叫做栅栏损失。

    频谱的离散化过程可以看做对连续频谱的采样过程。使用连续频谱上不同的采用点是,FFT谱看起来会有所不同,如下图所示。线图显示了两种不同的情况:左图中信号频率基本落在一条谱线上:幅值损失小并且泄露很少。而右图的信号频率落在了两条谱线之间:信号功率被分散,幅值降低并且泄露强度变得更强。

    对于每种窗函数,栅栏损失不能用一个确定的值来进行描述。因此它不能简单的用一个参数去补偿幅值损失。栅栏损失一般来说对于每种频谱分量的大小一般是不同的,其很大程度上依赖于信号频率,采样频率和谱线数目。但是可以计算出最大栅栏损失,即当信号频率刚好落在两条谱线之间的情况。


    除此以外,还有两种方式可以用来避免栅栏损失:

  •     使用flattop window,一般只产生很小的最大栅栏损失(<0.02dB)
  •     根据信号频率,合理设置采样频率,这种方法同样可以用来避免频谱泄露

    3.4FFT处理增益(FFT processing gain)

    处理增益可以降低背景噪声基底,其原理如下:FFT变换可以看做是将信号通过很多N filter(梳状滤波器),每一个间隔并且决定了每个滤波器的功率输出。当谱线数量N(或者说滤波器数量)增加时,滤波器变窄并且每条谱线上的功率变小,如下图。


    处理增益PG(processing gain)准确地描述了这部分减少量。如果N翻倍,那么变为原来的一般,并且噪声基底降低3dB。这将影响如噪声等宽带信号在功率谱上的显示。FFT谱上的噪声基底由于处理增益将会显示地比原来更低。处理增益可以按下式进行计算,并且可以加到噪声基底上去补偿这部分效应。为了准确测量噪声基底水平可以将多个FFT变换结果进行平均以减少幅度波动(如下图右侧所示)


    3.5等效噪声带宽(Equivalent noise bandwidth ENBW)

    根据所应用的窗函数,单一谱线上所积累的噪声量会有所不同,这种不同所依据的就是ENBW。如果使用了一个非矩形窗,那么这种现象就会导致噪声基底的升高。为了补偿这部分效应,一个修正细说需要从基底噪声中减去。这个修正系数可以通过不同窗函数的ENBW进行计算。

    3.6总结



    4 准确测量

    如果上述因素别正确地考虑在内,那么信号就可以通过FFT进行准确地测量。下面以一个受到噪声干扰的正弦函数进行说明。

    4.1 正弦信号和窄带信号

    正弦信号和其他窄带信号(带宽小于频率谱线间隔)在频谱上以尖峰的形式出现。窄带信号的真实功率 Ptrue可以通过显示的功率Pdispl进行计算


    相干功率增益可以通过Tab.2中读出,需要注意的是栅栏效应并不是一个常数。如果信号能量被单根谱线扑捉到了,那么可以记做0dB,如果信号能量刚好被两根谱线平分,那么气数值可以从Tab.2中查询最差情况。如果需要准确的数值而信号又不在谱线中间,那么最简单的办法就是使用flattop窗函数。

    4.2噪声和其他宽带信号

    这里有两种行还是的信号需要进行区分:白噪声,即在整个功率谱上为常数的信号和人资噪声或者宽带信号。

    4.2.1 Reading the average noise(white noise)

    此方法主要适用于白噪声,噪声的真实功率Ptrue可以通过显示的noise floor Pfloor来进行计算:


    为了最后得到准确的结果,displayed noise floor必须被准确地测量。然而,由于噪声的随机性,想要达到这个目标比较困难。为了获得准确的noise floor,一般由两种解决方法:

  •     FFT averaging:平均多次的FFT变换结果来降低噪声的随机性
  •     Bin averaging:对单次FFT变换得到的谱线进行平均(排除掉代表直流分量和其他不需要成分的谱线),这一部分在下面的章节中将会进行详细说明。

    4.2.2 Summing of FFT bins(任意噪声和宽带信号)

    将FFT变换的谱线加起来是一个处理所有噪声和宽带信号的很好的方法。除了按照上述方法确定noise floor,可以将包含待测信号分量的频率谱线简单相加。需要注意的是,相加的是值是线性值(不是dB)并且修正增益不需要加入其中,因为这些增益已经被考虑在相加过程当中了。

    

    这种方法的优点是所需要的谱线可以按照需求进行挑选,进行方便的测量。

    4.3示例


    如上图显示了一个典型的受白噪声干扰的正弦波的FFT变换结果。因为分析过程中使用了汉宁窗,所以显示的功率谱并不是真实的功率表谱,显示的正弦信号功率为5.9dBm。使用前面提到的十字可以得出正弦信号真实的功率谱。下式中CPG为6dB,应为谱峰基本落在单一谱线上所以栅栏损失定义为0。

    

    并且noise floor也可以通过显示值进行计算。(CPG为6分贝,1024点FFT的处理增益为27.1dB,ENBW的修正系数约为 -1.8 dB)

    

    



    

    

    

    

 

   

    

猜你喜欢

转载自blog.csdn.net/qq_24598387/article/details/79419083