当前位置: 首页 > news >正文

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(N3log⁡N)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,,N1(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πγcos⁡2πxe−γsin⁡22πxQ(−2γcos⁡2π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π1e2t2(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<xxtϕ(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−lim⁡a→−∞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*}xxtϕ(t)dt=x1xtϕ(t)dt=x1xt2π1e2t2dt=x2π1xte2t2dt=x2π1x2/2eu(du)( u=t2/2,  du=tdt)=x2π1x2/2eudu=x2π1[eu]x2/2=x2π1(ex2/2alimea)=x2π1(ex2/20)=x1(2π1ex2/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∞=−(lim⁡t→∞ϕ(t)t−ϕ(x)x)=−(lim⁡t→∞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=(tlimtϕ(t)xϕ(x))=(tlimt2πet2/2xϕ(x))=(0xϕ(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)=1Q(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πγcos⁡2πxe−γsin⁡22π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,x1/4x>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+θ+vnun(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+unfnθ.(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=0N1(xn+unfnθ)2(11)

III. FAST LSPUE ALGORITHM

为了最小化 J(f,θ,un)J(f, \theta, u_n)J(f,θ,un),困难在于 unu_nun 是未知的。如果 unu_nun 已知,我们可以很容易地用最小二乘法公式解决这个问题。在频率估计问题中,我们发现 unu_nunnnn 的单调函数。具体来说,当 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}2Nf(N1)+θ<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,(2N1),,2N1.(17)

对于给定的 mmmum=[u0m,u1m,…,uN−1m]T\boldsymbol u^m = [u_0^m, u_1^m, \dots, u_{N-1}^m]^Tum=[u0m,u1m,,uN1m]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=0N1(ynmfnθ)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(N1)(N+1)12n=0N1(n(N1)/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)2n=0N1(2N3n1)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[xnpn](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[X1],M[X+1],X,X>1/2X<1/2otherwise.

在[9]中研究了(22)中的相位展开操作。这样,y^nm\hat{y}_n^my^nmxnx_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/2y^nmpn<1/2,这意味着 y^nm\hat{y}_n^my^nmxnx_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=0N1(y^nmfnθ)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(N1)(N+1)12n=0N1(n(N1)/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)2n=0N1(2N3n1)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∗=arg⁡min⁡Jm(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估计器的计算复杂度仍然是Nlog⁡NN \log NNlogN

在这里插入图片描述

在我们的仿真中,单正弦信号的参数为f=0.1f=0.1f=0.1θ=0\theta=0θ=0。当N=64N=64N=64N=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的矩阵,因为使用这些参数可以获得最佳的阈值性能。

http://www.lryc.cn/news/596788.html

相关文章:

  • USB4.0:开启高速数据传输的新时代
  • 当if else比较多时候应该怎么避免?
  • MCP与企业数据集成:ERP、CRM、数据仓库的统一接入
  • #Linux权限管理:从“Permission denied“到系统安全大师
  • uniapp自定义圆形勾选框和全选框
  • iOS 抓包工具有哪些?2025实用指南与场景推荐
  • 重磅发布:Oracle ADG 一键自动化搭建脚本
  • 离线快速处理PDF格式转化的方案
  • 揭秘ThreadLocal核心原理与应用
  • Linux文件系统理解1
  • NLP自然语言处理的一些疑点整理
  • vue2的scoped 原理
  • 基于SpringBoot+MyBatis+MySQL+VUE实现的实习管理系统(附源码+数据库+毕业论文+项目部署视频教程+项目所需软件工具)
  • Python通关秘籍(五)数据结构——元组
  • linux 驱动 - v4l2 驱动框架
  • Linux 重定向和缓冲区
  • docker-desktop启动失败
  • leetcode 1695. 删除子数组的最大得分 中等
  • importlib.import_module() 的用法与实战案例
  • MySQL 学习一 存储结构和log
  • HTML结构解析
  • SpringAOP的实现原理和场景
  • SQLAlchemy 2.0简单使用
  • c++day05(ASCII)
  • 性能测试-从0到1搭建性能测试环境Jmeter+Grafana+influxDB+Prometheus+Linux
  • “鱼书”深度学习入门 笔记(1)前四章内容
  • torchvision.transforms 与 MONAI 数据增强的异同
  • C# 类 封装 属性 练习题
  • RabbitMQ-交换机(Exchange)
  • Ajax第一天