Fast Frequency Estimation Algorithm by Least Squares Phase Unwrapping
I. 引言
单个含噪正弦信号的频率估计是一个研究已久的问题,并有多种应用[1]。在高斯白噪声假设下,最大似然(ML)频率估计器是Rife和Boorstyn [2]中提出的周期图估计器,其中傅里叶变换用于搜索周期图的最大值。周期图估计器被广泛认为是单频估计的最佳方法。在[2]中,粗略搜索基于快速傅里叶变换(FFT),而精细搜索则基于非线性优化。为了简化非线性优化,[3]中研究了一种五峰值内插器,它可以找到峰值并产生接近ML估计器的估计。此外,信号子空间法(SA)也已用于估计单个含噪正弦信号的频率[4],其中频率估计在小误差条件下近似无偏,其方差接近ML估计器的方差。
相位展开估计器是另一种单频估计方法,最早在[5]中提出。该方法展开复正弦信号的相位,然后通过线性回归(linear regression,LR)估计频率。然而,传统的相位展开算法在低信噪比(SNR)下会遇到模 2π2\pi2π 模糊问题,以至于相位展开估计器的阈值处于相对较高的SNR [6]。
为了解决模 2π2\pi2π 模糊问题,Clarkson将相位展开问题转化为寻找格中的最近点,并利用格点理论解决了该问题[7]。仿真结果表明,其估计性能接近周期图估计器,但作者没有提供理论证明。最近,McKilliam在最小二乘意义上发展了基于格的方法[8],并证明了该估计器是强一致的,其估计方差在数值模拟中的高信噪比下接近克拉默-拉奥界(CRB) [2]。在[8]中,最小二乘相位展开估计器(LSPUE)显示出与经典周期图估计器相同的阈值。然而,基于格点理论的相位展开具有高达O(N3logN)O(N^3\log N)O(N3logN)的计算复杂度,因此不能用于实际应用。最近,有人提出了一种基于相位滤波器的快速相位展开方法[9],但是在频率估计问题中滤波器参数很难确定。
在这封信中,我们提出了一种快速频率估计算法,它结合了LSPUE的准确性和滤波方法的快速操作。所提出的方法在最小二乘意义上执行相同的相位展开,因此它具有与[8]中方法相同的性能,但计算复杂度低至O(N2)O(N^2)O(N2)。
II. PROBLEM DESCRIPTION
假设观测到的包含 NNN 个样本的序列具有以下形式:
rn=Aej2π(fn+θ)+wn,n=0,1,…,N−1(1) r_n = Ae^{j2\pi(fn+\theta)} + w_n, \quad n=0, 1, \dots, N-1 \quad \tag{1} rn=Aej2π(fn+θ)+wn,n=0,1,…,N−1(1)
其中fff是频率,θ\thetaθ是初始相位,AAA是信号幅度。噪声样本 wnw_nwn 是独立的、同分布的高斯复随机变量,均值为0,方差为2σ22\sigma^22σ2。在这封信中,我们试图估计频率fff,并假设fff在 [−1/2,1/2)[-1/2, 1/2)[−1/2,1/2) 范围内。rnr_nrn 的相位由下式给出:
∠rn=2π(fn+θ+vn)(mod 2π)(2) \angle r_n = 2\pi(fn + \theta + v_n) \quad (\text{mod } 2\pi) \quad \tag{2} ∠rn=2π(fn+θ+vn)(mod 2π)(2)
其中vnv_nvn是在[−1/2,1/2)[-1/2, 1/2)[−1/2,1/2)范围内定义的相位噪声。噪声项vnv_nvn的分布如下[10]:
fv(x)=e−γ+2πγcos2πxe−γsin22πxQ(−2γcos2πx)(3) f_v(x) = e^{-\gamma} + 2\sqrt{\pi\gamma}\cos{2\pi x}e^{-\gamma\sin^2{2\pi x}}Q(-\sqrt{2\gamma}\cos{2\pi x}) \quad \tag{3} fv(x)=e−γ+2πγcos2πxe−γsin22πxQ(−2γcos2πx)(3)
其中γ=A22σ2\gamma = \frac{A^2}{2\sigma^2}γ=2σ2A2是信噪比(SNR)。Q函数定义为:
Q(x)=∫x∞ϕ(t)dt(4) Q(x) = \int_x^\infty \phi(t)dt \quad \tag{4} Q(x)=∫x∞ϕ(t)dt(4)
其中
ϕ(t)=12πe−t22(5) \phi(t) = \frac{1}{\sqrt{2\pi}}e^{-\frac{t^2}{2}} \quad \tag{5} ϕ(t)=2π1e−2t2(5)
是标准正态分布。对于x>0x > 0x>0,我们有
Q(x)=∫x∞ϕ(t)dt<∫x∞txϕ(t)dt=ϕ(x)x Q(x) = \int_x^\infty \phi(t)dt < \int_x^\infty \frac{t}{x}\phi(t)dt = \frac{\phi(x)}{x} Q(x)=∫x∞ϕ(t)dt<∫x∞xtϕ(t)dt=xϕ(x)
∫x∞txϕ(t)dt=1x∫x∞t⋅ϕ(t)dt=1x∫x∞t⋅12πe−t22dt=1x2π∫x∞te−t22dt=1x2π∫−x2/2−∞eu(−du)(令 u=−t2/2, 则 du=−t⋅dt)=1x2π∫−∞−x2/2eudu=1x2π[eu]−∞−x2/2=1x2π(e−x2/2−lima→−∞ea)=1x2π(e−x2/2−0)=1x(12πe−x2/2)=ϕ(x)x\begin{align*} \int_x^\infty \frac{t}{x}\phi(t)dt &= \frac{1}{x} \int_x^\infty t \cdot \phi(t) dt \\ &= \frac{1}{x} \int_x^\infty t \cdot \frac{1}{\sqrt{2\pi}}e^{-\frac{t^2}{2}} dt \\ &= \frac{1}{x \sqrt{2\pi}} \int_x^\infty t e^{-\frac{t^2}{2}} dt \\ &= \frac{1}{x \sqrt{2\pi}} \int_{-x^2/2}^{-\infty} e^u (-du) \quad (\text{令 } u = -t^2/2, \text{ 则 } du = -t \cdot dt) \\ &= \frac{1}{x \sqrt{2\pi}} \int_{-\infty}^{-x^2/2} e^u du \\ &= \frac{1}{x \sqrt{2\pi}} \left[ e^u \right]_{-\infty}^{-x^2/2} \\ &= \frac{1}{x \sqrt{2\pi}} \left( e^{-x^2/2} - \lim_{a \to -\infty} e^a \right) \\ &= \frac{1}{x \sqrt{2\pi}} \left( e^{-x^2/2} - 0 \right) \\ &= \frac{1}{x} \left( \frac{1}{\sqrt{2\pi}} e^{-x^2/2} \right) \\ &= \frac{\phi(x)}{x} \end{align*}∫x∞xtϕ(t)dt=x1∫x∞t⋅ϕ(t)dt=x1∫x∞t⋅2π1e−2t2dt=x2π1∫x∞te−2t2dt=x2π1∫−x2/2−∞eu(−du)(令 u=−t2/2, 则 du=−t⋅dt)=x2π1∫−∞−x2/2eudu=x2π1[eu]−∞−x2/2=x2π1(e−x2/2−a→−∞limea)=x2π1(e−x2/2−0)=x1(2π1e−x2/2)=xϕ(x)
并且
(1+1x2)Q(x)>∫x∞(1+1t2)ϕ(t)dt=ϕ(x)x. \left(1+\frac{1}{x^2}\right)Q(x) > \int_x^\infty \left(1+\frac{1}{t^2}\right)\phi(t)dt = \frac{\phi(x)}{x}. (1+x21)Q(x)>∫x∞(1+t21)ϕ(t)dt=xϕ(x).
∫x∞(1+1t2)ϕ(t)dt=∫x∞(−ddt(ϕ(t)t))dt=−[ϕ(t)t]x∞=−(limt→∞ϕ(t)t−ϕ(x)x)=−(limt→∞e−t2/2t2π−ϕ(x)x)=−(0−ϕ(x)x)=ϕ(x)x\begin{align*} \int_x^\infty \left(1+\frac{1}{t^2}\right) \phi(t) dt &= \int_x^\infty \left(-\frac{d}{dt}\left(\frac{\phi(t)}{t}\right)\right) dt \\ &= -\left[ \frac{\phi(t)}{t} \right]_x^\infty \\ &= -\left( \lim_{t\to\infty} \frac{\phi(t)}{t} - \frac{\phi(x)}{x} \right) \\ &= -\left( \lim_{t\to\infty} \frac{e^{-t^2/2}}{t\sqrt{2\pi}} - \frac{\phi(x)}{x} \right) \\ &= -\left( 0 - \frac{\phi(x)}{x} \right) \\ &= \frac{\phi(x)}{x} \end{align*}∫x∞(1+t21)ϕ(t)dt=∫x∞(−dtd(tϕ(t)))dt=−[tϕ(t)]x∞=−(t→∞limtϕ(t)−xϕ(x))=−(t→∞limt2πe−t2/2−xϕ(x))=−(0−xϕ(x))=xϕ(x)
因此,
x1+x2ϕ(x)<Q(x)<ϕ(x)x,x>0.(6) \frac{x}{1+x^2}\phi(x) < Q(x) < \frac{\phi(x)}{x}, \quad x>0. \quad \tag{6} 1+x2xϕ(x)<Q(x)<xϕ(x),x>0.(6)
考虑到Q(x)=1−Q(−x)Q(x) = 1 - Q(-x)Q(x)=1−Q(−x),我们有
1+ϕ(x)x<Q(x)<1+x1+x2ϕ(x),x<0.(7) 1+\frac{\phi(x)}{x} < Q(x) < 1+\frac{x}{1+x^2}\phi(x), \quad x<0. \quad \tag{7} 1+xϕ(x)<Q(x)<1+1+x2xϕ(x),x<0.(7)
将(6)和(7)代入(3),我们发现对于较大的 γ\gammaγ,fv(x)f_v(x)fv(x) 的下界和上界近似相等。在这种情况下,
fv(x)={2πγcos2πxe−γsin22πx,∣x∣≤1/40,∣x∣>1/4.(8) f_v(x) = \begin{cases} 2\sqrt{\pi\gamma}\cos{2\pi x}e^{-\gamma\sin^2{2\pi x}}, & |x| \le 1/4 \\ 0, & |x| > 1/4. \end{cases} \quad \tag{8} fv(x)={2πγcos2πxe−γsin22πx,0,∣x∣≤1/4∣x∣>1/4.(8)
令 xn=∠rn/(2π)x_n = \angle r_n / (2\pi)xn=∠rn/(2π),我们得到
xn=fn+θ+vn−un(9) x_n = fn + \theta + v_n - u_n \quad \tag{9} xn=fn+θ+vn−un(9)
其中 un=[fn+θ+vn]u_n = [fn + \theta + v_n]un=[fn+θ+vn],[x][x][x] 表示与 xxx 最接近的整数。因此,我们有
vn=xn+un−fn−θ.(10) v_n = x_n + u_n - fn - \theta. \quad \tag{10} vn=xn+un−fn−θ.(10)
为了在最小二乘意义上使噪声项 vnv_nvn 最小,我们定义目标函数为
J(f,θ,un)=∑n=0N−1(xn+un−fn−θ)2(11) J(f, \theta, u_n) = \sum_{n=0}^{N-1}(x_n + u_n - fn - \theta)^2 \quad \tag{11} J(f,θ,un)=n=0∑N−1(xn+un−fn−θ)2(11)
III. FAST LSPUE ALGORITHM
为了最小化 J(f,θ,un)J(f, \theta, u_n)J(f,θ,un),困难在于 unu_nun 是未知的。如果 unu_nun 已知,我们可以很容易地用最小二乘法公式解决这个问题。在频率估计问题中,我们发现 unu_nun 是 nnn 的单调函数。具体来说,当 f>0f>0f>0时,unu_nun 是单调递增函数,当 f<0f<0f<0 时,unu_nun 是单调递减函数。考虑到 f∈[−1/2,1/2)f \in [-1/2, 1/2)f∈[−1/2,1/2),我们有 −N2≤f(N−1)+θ<N2-\frac{N}{2} \le f(N-1)+\theta < \frac{N}{2}−2N≤f(N−1)+θ<2N。因此,我们定义
unm=⌈mnN⌉,m=−N2,−(N2−1),…,N2−1.(17) u_n^m = \left\lceil m\frac{n}{N} \right\rceil, \quad m = -\frac{N}{2}, -\left(\frac{N}{2}-1\right), \dots, \frac{N}{2}-1. \quad \tag{17} unm=⌈mNn⌉,m=−2N,−(2N−1),…,2N−1.(17)
对于给定的 mmm,um=[u0m,u1m,…,uN−1m]T\boldsymbol u^m = [u_0^m, u_1^m, \dots, u_{N-1}^m]^Tum=[u0m,u1m,…,uN−1m]T是一个在整数空间 ZN\mathbb Z^NZN 中的向量。显然,um\boldsymbol u^mum 对应于频率为 mN\frac{m}{N}Nm 的信号。我们定义 NNN 个向量,它们代表了 ZN\mathbb Z^NZN 中最有可能的 NNN 个解。我们首先检查这 NNN 个解,然后在这些 NNN 个解附近寻找更好的解。整个过程类似于[2]中描述的粗略搜索和精细搜索,但我们是在展开的相位中搜索最佳的unu_nun,而[2]中的算法是在频域中搜索最大值。
现在,我们重新定义目标函数
Jm(f,θ)=∑n=0N−1(ynm−fn−θ)2(18) J^m(f, \theta) = \sum_{n=0}^{N-1}(y_n^m - fn - \theta)^2 \quad \tag{18} Jm(f,θ)=n=0∑N−1(ynm−fn−θ)2(18)
其中
ynm=xn+unm(19) y_n^m = x_n + u_n^m \quad \tag{19} ynm=xn+unm(19)
是xnx_nxn的展开相位。由于 unmu_n^munm 是已知的,由[11]可得频率和相位
f(m)=12∑n=0N−1(n−(N−1)/2)ynmN(N−1)(N+1)(20) f(m) = \frac{12 \sum_{n=0}^{N-1}(n - (N-1)/2)y_n^m}{N(N-1)(N+1)} \quad \tag{20} f(m)=N(N−1)(N+1)12∑n=0N−1(n−(N−1)/2)ynm(20)
θ(m)=2∑n=0N−1(2N−3n−1)ynmN(N+1). \theta(m) = \frac{2 \sum_{n=0}^{N-1}(2N-3n-1)y_n^m}{N(N+1)}. θ(m)=N(N+1)2∑n=0N−1(2N−3n−1)ynm.
残差误差表示为 Jm(f(m),θ(m))J^m(f(m), \theta(m))Jm(f(m),θ(m))。这是粗略搜索过程。显然,f(m)f(m)f(m) 和 θ(m)\theta(m)θ(m) 是给定 um\boldsymbol u^mum 的最佳解,但它们不是全局最优解。现在,我们尝试在 um\boldsymbol u^mum 附近找到更好的解。这是精细搜索过程。首先,我们重构线性相位
pn=f(m)n+θ(m).(21) p_n = f(m)n + \theta(m). \quad \tag{21} pn=f(m)n+θ(m).(21)
然后,我们围绕线性相位pnp_npn展开相位xnx_nxn,如下所示
y^nm=pn+M[xn−pn](22) \hat{y}_n^m = p_n + M[x_n - p_n] \quad \tag{22} y^nm=pn+M[xn−pn](22)
其中
M[X]={M[X−1],X>1/2M[X+1],X<−1/2X,otherwise. M[X] = \begin{cases} M[X-1], & X > 1/2 \\ M[X+1], & X < -1/2 \\ X, & \text{otherwise}. \end{cases} M[X]=⎩⎨⎧M[X−1],M[X+1],X,X>1/2X<−1/2otherwise.
在[9]中研究了(22)中的相位展开操作。这样,y^nm\hat{y}_n^my^nm和xnx_nxn满足 y^nm=xn(mod1)\hat{y}_n^m = x_n \pmod 1y^nm=xn(mod1)和 ∣y^nm−pn∣<1/2|\hat{y}_n^m - p_n| < 1/2∣y^nm−pn∣<1/2,这意味着 y^nm\hat{y}_n^my^nm是xnx_nxn 围绕 pnp_npn 的相位展开。现在,我们重新定义目标函数
J^m(f,θ)=∑n=0N−1(y^nm−fn−θ)2.(23) \hat{J}^m(f, \theta) = \sum_{n=0}^{N-1}(\hat{y}_n^m - fn - \theta)^2. \quad \tag{23} J^m(f,θ)=n=0∑N−1(y^nm−fn−θ)2.(23)
同样,我们通过最小二乘法公式求解频率和相位
f^(m)=12∑n=0N−1(n−(N−1)/2)y^nmN(N−1)(N+1)(24) \hat{f}(m) = \frac{12 \sum_{n=0}^{N-1}(n - (N-1)/2)\hat{y}_n^m}{N(N-1)(N+1)} \quad \tag{24} f^(m)=N(N−1)(N+1)12∑n=0N−1(n−(N−1)/2)y^nm(24)
θ^(m)=2∑n=0N−1(2N−3n−1)y^nmN(N+1). \hat{\theta}(m) = \frac{2 \sum_{n=0}^{N-1}(2N-3n-1)\hat{y}_n^m}{N(N+1)}. θ^(m)=N(N+1)2∑n=0N−1(2N−3n−1)y^nm.
残差误差表示为 J^m(f^(m),θ^(m))\hat{J}^m(\hat{f}(m), \hat{\theta}(m))J^m(f^(m),θ^(m))。现在,我们比较残差误差 Jm(f(m),θ(m))J^m(f(m), \theta(m))Jm(f(m),θ(m)) 和 J^m(f^(m),θ^(m))\hat{J}^m(\hat{f}(m), \hat{\theta}(m))J^m(f^(m),θ^(m))。如果
Jm(f(m),θ(m))≤J^m(f^(m),θ^(m)) J^m(f(m), \theta(m)) \le \hat{J}^m(\hat{f}(m), \hat{\theta}(m)) Jm(f(m),θ(m))≤J^m(f^(m),θ^(m))
则 Jm(f(m),θ(m))J^m(f(m), \theta(m))Jm(f(m),θ(m))是给定 mmm 的局部最优解,精细搜索结束。如果
Jm(f(m),θ(m))>J^m(f^(m),θ^(m)) J^m(f(m), \theta(m)) > \hat{J}^m(\hat{f}(m), \hat{\theta}(m)) Jm(f(m),θ(m))>J^m(f^(m),θ^(m))
我们按如下方式更新参数:
f(m)=f^(m)θ(m)=θ^(m)Jm(f(m),θ(m))=J^m(f^(m),θ^(m)) \begin{aligned} f(m) &= \hat{f}(m) \\ \theta(m) &= \hat{\theta}(m) \\ J^m(f(m), \theta(m)) &= \hat{J}^m(\hat{f}(m), \hat{\theta}(m)) \end{aligned} f(m)θ(m)Jm(f(m),θ(m))=f^(m)=θ^(m)=J^m(f^(m),θ^(m))
然后重复从(21)到(24)的步骤。
同样地,我们计算所有mmm的残差误差Jm(f(m),θ(m))J^m(f(m), \theta(m))Jm(f(m),θ(m)),并按如下方式找到最优的mmm:
m∗=argminJm(f(m),θ(m)).(25) m^* = \arg \min J^m(f(m), \theta(m)). \quad \tag{25} m∗=argminJm(f(m),θ(m)).(25)
图1显示了整个算法的示意图。图1(a)显示了粗略搜索的流程,图1(b)显示了精细搜索的流程。显然,粗略搜索中有 NNN 个循环,每个循环都包含一次用于寻找局部最优解的精细搜索。根据我们的数值模拟结果,每次精细搜索包含的迭代过程通常在五到八轮后收敛。在每次迭代中,相位展开和最小二乘计算需要O(N)O(N)O(N)次算术运算。因此,整个FLSPUE算法的计算复杂度为O(N2)O(N^2)O(N2)。
IV. SIMULATION RESULTS
在本节中,我们检验在第三节中开发的FLSPUE算法的性能。由于所提出的FLSPUE算法是LSPUE方案的一种快速实现,其性能应与[8]中的LSPUE相同。因此,我们仅比较了五种估计器的性能:ML估计器[2]、快速近似ML估计器(fast ML)[3]、SA[4]、LR[5]以及所提出的FLSPUE算法。理想的ML估计器是搜索周期图的最大值,但[2]中的非线性优化很复杂。在本信中,我们通过chirp z变换(CZT)算法[12]执行精细搜索,该算法计算由粗略搜索找到的峰值附近的离散傅里叶变换。然后,我们可以从CZT算法的计算结果中搜索最大值。CZT算法是基于FFT实现的,因此基于CZT的ML估计器的计算复杂度仍然是NlogNN \log NNlogN。
在我们的仿真中,单正弦信号的参数为f=0.1f=0.1f=0.1和θ=0\theta=0θ=0。当N=64N=64N=64和N=256N=256N=256时的仿真结果显示在图2和图3中,每次仿真的信噪比(SNR)在–20和20 dB之间变化,每个SNR值都运行了10 000次试验。在图2和图3中,基于CZT的ML估计器被称为CZT ML。在SA算法中,观测信号表示为一个m×nm \times nm×n的数据矩阵,且SA算法在不同矩阵维度下的性能是不同的。在这封信中,我们为N=64N=64N=64选择8×88 \times 88×8的矩阵,为N=256N=256N=256选择16×1616 \times 1616×16的矩阵,因为使用这些参数可以获得最佳的阈值性能。