FFT快速傅里叶变换中的误差来源 您所在的位置:网站首页 基于fft的频谱分析 FFT快速傅里叶变换中的误差来源

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

2023-12-19 05:24| 来源: 网络整理| 查看: 265

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

    该文是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,一般只产生很小的最大栅栏损失(


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有