如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    为了搞清楚信号功率谱的概念,在之前的博客中分别总结了MATLAB中有关pwelch函数的用法,和翻译了一篇有关FFT变换过程中误差来源的文章,为了加深对pwelch法进行谱估计背后原理的理解,又找到了一篇比较好的英文说明文章,特分享给大家,同时也加深自己的理解。

    文章来自University of Applied Sciences NW Switzerland的Hanspeter Schmid ,原文题目为《How to use the FFT and Matlab’s pwelch function for signal and noise simulations and measurements》,在翻译过程中对原文中不重要的信息进行了适度删改,如有需要可以自行搜索原文或者给我留言私信均可,下面开始正文部分:

        

    1.导论

    模拟或者测量信号和噪声并不是一件容易的事情,因为在使用fft进行功率谱估计的时候,英文信号和和功率谱的特征有所不同。举一个例子:利用软件产生一个频率为100Hz,振幅为如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量的正弦信号受到频谱密度为10-8的白噪声的干扰。如何信号的长度增加100倍,但是采样频率和之前一直的话,fft变换得到的功率谱会怎样变化?

    答案可以根据Parceval's Theorem(帕萨瓦尔定理)得到:信号在时域和频域上的功率相等。如果我们增加了信号的长度,但是信号的功率并不会发生改变,所以功率谱中信号的幅度不会发生改变。时域中的信号功率同样不会改变,但由于是白噪声,其在整个功率谱线上具有相同的值。又有采样时间增加了一百倍,所以功率谱线的数目也增加了100倍,因此与之前的情况相比,单根谱线的幅值只有之前的百分之一,我这降低了20dB。下图显示了这种变化。

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    但是实际分析中的结果并不是这么简单,其主要原因有两点:第一,fft的结果自身受到fft变换长度N的影响;第二,如上图左图所示,信号由于频谱泄露会对噪声的功率谱产生一定影响,这种影响可以通过选择合适的窗函数进行控制。

    2 FFT和窗函数

    对信号加窗意味着时域信号需要在fft之前乘以一个窗函数,信号序列从x[i]变成了x[i]w[i],以得到更好的频谱结果。

    和fft一样,加窗同样对信号和噪声有着不同的影响,在这里我们做一下简单的解释:功率谱上的每根谱线是有N个时域信号线性租号得到。如果所分析的是一个正弦信号,那么理想情况下,这N个样本会都加在一条谱线上,在功率谱上也就显示单一的一个尖峰。而对于加窗处理后的信号x[i]w[i],谱线中的平均值会乘以一个系数CG

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    CG(coherent gain)称作窗函数的相干增益。如果信号的白噪声的话,那么N点时域信号不相关,这就意味着对于每条频率谱线,N点的信号功率会相加,其对每条谱线的平均争议NG为:

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    NG(noise gain)被称为噪声增益。对于矩形窗来说CG=NG=1。常用窗函数的CG,NG和栅栏损失(scallop loss)如下表所示:

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    一般来说根据使用目的,有三种来对可以是得到的频谱正常化:第一种, 直接从谱中读取信号值;第二种,直接在图中读取噪声功率谱;还有第三种,通过将谱线上的数值相加,定量的确定任意频率带上的功率。

    一般来说第三种方法最为准确。但不幸的是,MATLAB中pwelch函数返回的是第二种类型的功率谱,下面进行详细的说明。

    2.1对读取信号RMS的标准化

    如果我们想要得从FFT谱中得到确定性信号的RMS值,我们必须将fft变换接错除以N乘CG后再计算功率谱密度。对于输入信号x,我们可以通过如下公式得到单边的功率谱:

    如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    通过这个缩放,我们可以直接从图中读出确定性信号的RMS值。之一这个读数并不总是准确:取决于该信号和谱线中最高频率分量的距离,所使用的的窗函数,其误差可达数dB。这种影响叫做栅栏效应(scallop loss or picket fence effect)。在这篇文章中我们选择的信号不存在这种问题。注意在实际测量过程中,只有数据和平和采样频率同步是才能避免这种问题。

    哪门我们如何才能从图中读出噪声的功率谱密度呢?当功率密度为如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量的噪声进行fft变换时,then the noise represented by one point of the FFT will be the noise integrated over a frequency range

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

    (其中Tsim是模拟信号的时间长度,Tsamp是采样周期)并且乘以一个噪声增益。因为我们之前将fft的结果除了CG,哪门我们实际画的是

如何使用FFT和MATLAB的pwelch函数对信号和噪声进行模拟和测量

或者说,若果我们