用FFT估计单频正弦信号的幅度

用FFT估计单频正弦信号的幅度

本文主要依据如下链接文章翻译整理而成,图片及公式也来源于该文,版权归原作者所有。

http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=5714405&contentType=Journals+%26+Magazines&sortType%3Dasc_p_Sequence%26filter%3DAND%28p_IS_Number%3A5714377%29

        FFT是数字信号处理中最常用,也是最重要的算法。在实践中,人们常用FFT来估计信号的频率。但有时候,也需要估计单频正弦信号的幅度,这时候用FFT还能做得到吗?

        答案是显然的,用FFT同样可以估计单频正弦信号的幅度。假定信号的幅度为A,频率为f, 信号采样点数为N。FFT之后,在频率f处会出现一个谱峰,幅度用M表示。在没有频谱泄露的情况下,有如下关系:

                                                          Mpeak=A*N/2    (1)

        但我们知道,由于FFT有明显的栅栏效应,只有很少的频率点不存在频谱泄露,如图1(a)所示。于是,对那些存在频谱泄露的点来说,用式(1)来估计信号幅度会有很大的误差,最大可达36.3%,如图1(b)所示。

                   用FFT估计单频正弦信号的幅度_第1张图片 

                                                                                         图1 

        于是,在选取谱峰之后,还要对其幅度值进行一定程度的校正,才能得到幅度的更好的估计。校正的方法之一对谱峰及其附近的值进行如下加权:

                   用FFT估计单频正弦信号的幅度_第2张图片

其中:

                

加权之后的效果如图2所示,最大估计误差约为0.0166dB。

                    

                                                         图2 

另外一种校正方式如下:

                    用FFT估计单频正弦信号的幅度_第3张图片

其中

        

这种校正方式的最大估计误差约为0.0082dB。

你可能感兴趣的:(算法,filter,fft)