Page 27 - 《应用声学》2020年第4期
P. 27

第 39 卷 第 4 期              温兵会等: 一种快速有效的正弦波信号频率估计方法                                          513


                                                                       x(n) = A e j(2πnf 0 /f s +θ 0 )  + w(n),
             0 引言
                                                                              n = 0, 1, · · · , N − 1,    (1)
                 正弦波信号的频率估计是数字信号处理领域
                                                               其中,f 0 = (k 0 + δ) · ∆f 为信号频率,∆f = f s /N
             的一个值得研究的经典课题,在声呐、雷达等领域                            为频率分辨率,δ 为数字频率偏差,取值范围在
             应用广泛。采用离散傅里叶变换 (Discrete Fourier                  −0.5 ∼ 0.5 之间,f s 为采样频率,k 0 为数字频率;
             transform, DFT) 谱估计方法估计正弦波信号的频                    w(n)为高斯白噪声,均值为 0,方差为 σ ;A和θ 0 分
                                                                                                  2
                                                                                                  n
             率是一种常用方法,由于快速傅里叶变换 (Fast                          别为信号幅度和初相;N 为信号长度。
             Fourier transform, FFT) 算法的高效性,该方法在                   对式(1)所示的信号进行N 点DFT得到
             工程上得到广泛应用           [1−3] 。利用 FFT 谱估计法进
                                                                             sin(π(k − (k 0 + δ)))
             行正弦波信号频率估计的方法很多,大体上可以                                X(k) = A  sin(π(k − (k 0 + δ))/N)
             分为两类。一类是需要判别频率修正方向的算法,                                         j(θ 0 −π(k−(k 0 +δ))(N−1)/N)
                                                                          · e                     + W(k),
             如 Rife 算法  [4−5] 、M-Rife 算法  [6]  和 I-Rife 算法 [7] 。
                                                                         k = 0, 1, · · · , N − 1,         (2)
             Rife 算法是正弦信号频域频率估计的经典算法,通
             过频谱插值对实际频率相对于谱线最大值频率的                             式 (2) 中,W(k) 表示高斯白噪声的 DFT,在不考虑
             偏移量进行估计,计算量小,但是存在两个问题:一                           噪声的情况下信号傅里叶变换的幅值为

             是当实际频率在谱线最大值频率附近时,频率估                                   |X(k)| = A   sin(π(k − (k 0 + δ)))    ,

                                                                                sin(π(k − (k 0 + δ))/N)
             计误差相对较大;二是,其频率估计精度易受噪声
             的影响,低信噪比(Signal-to-noise ratio, SNR)时估                          k = 0, 1, · · · , N − 1.     (3)
             计性能下降。M-Rife 算法解决了 Rife 算法的第一                         当信号的真实频率不等于频率分辨率 ∆f 的整
             个问题,但增加了运算量。I-Rife 算法解决了 Rife                     数倍时,利用 FFT 估计频率存在频率偏差,数字频
             算法的两个问题,但进一步增加了计算量。Rife 算                         率偏差 δ 取值范围在 −0.5 ∼ 0.5 之间,信号的真实
             法、M-Rife 算法和 I-Rife 算法存在的共同问题是需                   频率位于谱线最大值与次大值对应的频率之间。
             要判别频率修正方向,再计算频率偏差。另一类,基                               假设信号经过 N 点 FFT 运算后,频谱幅度最
             于 FFT 的频率估计方法,不需要判别频率修正方                                     |,对应的数字频率为 k 0 ,次大值为
                                                               大值为 |X k 0
             向,直接计算频率偏差,如 Candan 算法              [8] 、Fang 算   |X k 0 +α |。Rife算法利用频谱幅度的最大值和次大值
             法  [9]  和改进的 Fang算法   [10−12] 。Candan 算法计算        估计频率偏差,频率估计公式为               [4]
             简单,但当信噪比较低时,容易出现插值方向错误,
                                                                        ˆ
                                                                       f 0 = (k 0 + δ)∆f
             导致误差较大。Fang算法通过对信号在时域补等信                                       (                     )
                                                                                       |X k 0 +α |
             号长度的零,采用FFT频谱中最大谱线相邻的两根                                      =   k 0 + α               ,     (4)
                                                                                                  |
                                                                                    |X k 0 +α | + |X k 0
             谱线幅度估计频率偏差,提高了频率估计性能,但增
                                                               其中,频率修正方向 α = ±1。当|X k 0 +1 | > |X k 0 −1 |
             加了计算量。改进的 Fang 算法在 Fang 算法基础上
                                                               时,α = +1;当|X k 0 +1 | < |X k 0 −1 |时,α = −1。
             提高了频率估计性能,减少了计算量。Candan算法
                                                                   Rife算法计算量小,但在频偏较小时,频率估计
             和 Fang 算法及其改进算法存在的共同问题是涉及
                                                               误差增大,此外,低信噪比时估计性能下降;I-Rife
             到非线性函数的计算,增加了算法的复杂度。为此,
                                                               算法   [7]  是对 Rife算法的改进,利用频谱细化技术计
             本文提出了一种新的频率估计算法,在 N 点 FFT
                                                               算谱值 |X(k 0 ± 0.5)| 作为频率修正方向的判据,利
             运算基础上,利用两点细化的频谱值估计频率偏移
                                                               用频移技术将被估计频率移至两相邻数字频率的
             量,分析了频偏估计的偏差和算法的复杂度。相比
                                                               中心处,以确保 Rife算法能够准确估计频率。I-Rife
             于I-Rife 和改进的 Fang 算法,本文不需要判别频率
                                                               算法在一定程度上克服了 Rife 算法的不足,但增
             修正方向,降低了算法计算量和复杂度。
                                                               加了计算量;改进 Fang 算法 (I-Fang)         [10]  利用 DFT
             1 问题描述                                            计算 6 个频点的谱值来估计数字频率偏差,避免了
                                                               Fang 算法中对信号补等长度的零进行 2N 点 FFT
                 含有噪声的复正弦信号为                                   运算,减少了计算量,但利用 I-Fang 算法进行频率
   22   23   24   25   26   27   28   29   30   31   32