[阵列信号处理]近场DOA估计算法-降维MUSIC方法(第二集)


  本文的主要参考资料是张小飞老师的《阵列信号处理及MATLAB实现(第3版)》(电子工业出版社出版)。

背景

  近场方向到达(Direction of Arrival, DOA)估计是阵列信号处理领域的一个重要研究课题。DOA估计可以分为远场DOA估计和近场DOA估计。在近场DOA估计中,由于信号源距离阵列较近,因此信号的波前会呈现出球面波特性,这与远场情况下的平面波假设不同。近场DOA估计在很多实际应用中都非常重要,例如,无线通信、雷达、声纳、地震学以及生物医学等领域。
  前文中已经提过近场源估计的2D-MUSIC算法,其需要复杂度极高的二维联合搜索,接下来将提供另一种子空间方法,降维MUSIC,它将二维联合搜索转变为一维搜索,降低了一定的计算复杂度,在时效性上有更好的效果,并且降维MUSIC方法与2D-MUSIC方法的参数估计性能非常相近。
  接下来介绍近场DOA估计中的降维MUSIC方法,其信号模型与前文提及的2D-MUSIC方法一样,采用均匀线阵ULA(Uniform Linear Array),所谓二维就是指2个待估计的参数,距离 r r r和到达角 θ \theta θ。信号模型图如下所示:在这里插入图片描述
  阵列天线由 M = 2 N + 1 M=2N+1 M=2N+1个传感器阵元组成,相邻阵元间的间距为 d d d,以中心标号为0的传感器阵元为中心阵元,左右两边各分布 N N N个单边阵元,左右两边阵元共享中心标号为0的传感器阵元。因此,阵元 m ∈ [ − N , ⋯   , − 2 , − 1 , 0 , 1 , 2 , ⋯   , N ] m\in[-N,\cdots,-2,-1,0,1,2,\cdots,N] m[N,,2,1,0,1,2,,N],并且假设有 K K K个窄带近场非相干信号入射,在上图信号模型中画出了第 k ( 1 , 2 , . . . , K ) k(1,2,...,K) k1,2,...,K个近场信号入射,距离中心参考阵元距离 r k r_k rk,到达角为 θ k \theta_k θk。那么其接收信号矩阵 x ( t ) \boldsymbol{x}\left( t \right) x(t)可以写成如下形式
x ( t ) = [ x − N ( t ) , ⋯   , x − 1 ( t ) , x 0 ( t ) , x 1 ( t ) , ⋯   , x N ( t ) ] T = [ a ( θ 1 , r 1 ) , a ( θ 2 , r 2 ) , ⋯   , a ( θ K , r K ) ] s ( t ) + n ( t ) = A x s ( t ) + n ( t ) \boldsymbol{x}\left( t \right) =\left[ x_{-N}\left( t \right) ,\cdots ,x_{-1}\left( t \right) ,x_0\left( t \right) ,x_1\left( t \right) ,\cdots ,x_N\left( t \right) \right] ^T\\ =\left[ \boldsymbol{a}\left( \theta _1,r_1 \right) ,\boldsymbol{a}\left( \theta _2,r_2 \right) ,\cdots ,\boldsymbol{a}\left( \theta _K,r_K \right) \right] \boldsymbol{s}\left( t \right) +\boldsymbol{n}\left( t \right) \\ =\boldsymbol{A}_x\boldsymbol{s}\left( t \right) +\boldsymbol{n}\left( t \right) x(t)=[xN(t),,x1(t),x0(t),x1(t),,xN(t)]T=[a(θ1,r1),a(θ2,r2),,a(θK,rK)]s(t)+n(t)=Axs(t)+n(t)
其中, A x \boldsymbol{A}_x Ax是阵列流形, s ( t ) \boldsymbol{s}\left( t \right) s(t)是信号矩阵, n ( t ) \boldsymbol{n}\left( t \right) n(t)是加性高斯白噪声矩阵。
根据近场信号的菲涅尔近似,第 k k k个信号的导向矢量 a ( θ k , r k ) \boldsymbol{a}\left( \theta _k,r_k \right) a(θk,rk)可以被写成 a ( θ k , r k ) = [ e j ( γ k ( − N + 1 ) + ϕ k ( − N + 1 ) 2 ) , . . . , e j ( γ k ( − 1 ) + ϕ k ( − 1 ) 2 ) , 1 , e j ( γ k 1 + ϕ k 1 2 ) , . . . , e j ( γ k N + ϕ k N 2 ) ] T a\left( \theta _k,r_k \right) =\left[ \text{e}^{\text{j}\left( \gamma _k\left( -N+1 \right) +\phi _k\left( -N+1 \right) ^2 \right)},...,\text{e}^{\text{j}\left( \gamma _k\left( -1 \right) +\phi _k\left( -1 \right) ^2 \right)},1,\text{e}^{\text{j}\left( \gamma _k1+\phi _k1^2 \right)},...,\text{e}^{\text{j}\left( \gamma _kN+\phi _kN^2 \right)} \right] ^{\text{T}} a(θk,rk)=[ej(γk(N+1)+ϕk(N+1)2),...,ej(γk(1)+ϕk(1)2),1,ej(γk1+ϕk12),...,ej(γkN+ϕkN2)]T并且, γ k = − 2 π d λ sin ⁡ θ k , ϕ k = π d 2 λ r k cos ⁡ 2 θ k \gamma _k=-2\pi \frac{d}{\lambda}\sin \theta _k,\phi _k=\pi \frac{d^2}{\lambda r_k}\cos ^2\theta _k γk=2πλdsinθk,ϕk=πλrkd2cos2θk

降维MUSIC方法

  假设采样时间大于相干时间,有限次采样得到的接收信号的协方差矩阵可表示为如下所示,并对该协方差矩阵进行特征分解:
R ^ x = x ( t ) x H ( t ) / K = U S Σ S U S H + U N Σ N U N H \hat{R}_x=x(t)x^{\mathrm{H}}(t)/K=\boldsymbol{U}_{\text{S}}\boldsymbol{\Sigma }_{\text{S}}\boldsymbol{U}_{\text{S}}^{\text{H}}+\boldsymbol{U}_{\text{N}}\boldsymbol{\Sigma }_{\text{N}}\boldsymbol{U}_{\text{N}}^{\text{H}} R^x=x(t)xH(t)/K=USΣSUSH+UNΣNUNH
其中, x ( t ) \boldsymbol{x}\left( t \right) x(t)是接收信号矩阵, K K K是快拍数。 ( ∙ ) H (\bullet)^{\mathrm{H}} ()H是共轭转置, U S \boldsymbol{U}_S US是由大特征值对应的特征向量组成的信号子空间, U N \boldsymbol{U}_N UN是由小特征值对应的特征向量组成的噪声子空间。
  根据子空间理论,在近场时,噪声子空间和信号子空间的正交性仍然成立,因此,基于远场的MUSIC方法在近场时仍然适用。
  在搜索区间 r ∈ [ 0.62 ( D 3 / λ ) 1 / 2 , ( 2 D 2 / λ ) ] , θ ∈ [ − π / 2 , π / 2 ] r\in[0.62(D^3/\lambda)^{1/2},(2D^2/\lambda)],\theta\in[-\pi/2,\pi/2] r[0.62(D3/λ)1/2,(2D2/λ)],θ[π/2,π/2]内构造谱峰搜器, D = M d D=Md D=Md
P ( θ , r ) = 1 a H ( θ , r ) U n U n H a ( θ , r ) P\left( \theta ,r \right) =\frac{1}{a^H\left( \theta ,r \right) U_nU_{n}^{H}a\left( \theta ,r \right)} P(θ,r)=aH(θ,r)UnUnHa(θ,r)1
其中, a ( θ , r ) = [ e j ( γ ( − N + 1 ) + ϕ ( − N + 1 ) 2 ) , . . . , e j ( γ ( − 1 ) + ϕ ( − 1 ) 2 ) , 1 , e j ( γ 1 + ϕ 1 2 ) , . . . , e j ( γ N + ϕ N 2 ) ] T a\left( \theta ,r \right) =\left[ \text{e}^{\text{j}\left( \gamma \left( -N+1 \right) +\phi \left( -N+1 \right) ^2 \right)},...,\text{e}^{\text{j}\left( \gamma \left( -1 \right) +\phi \left( -1 \right) ^2 \right)},1,\text{e}^{\text{j}\left( \gamma 1+\phi 1^2 \right)},...,\text{e}^{\text{j}\left( \gamma N+\phi N^2 \right)} \right] ^{\text{T}} a(θ,r)=[ej(γ(N+1)+ϕ(N+1)2),...,ej(γ(1)+ϕ(1)2),1,ej(γ1+ϕ12),...,ej(γN+ϕN2)]T并且, γ = − 2 π d λ sin ⁡ θ , ϕ = π d 2 λ r cos ⁡ 2 θ \gamma =-2\pi \frac{d}{\lambda}\sin \theta ,\phi=\pi \frac{d^2}{\lambda r}\cos ^2\theta γ=2πλdsinθ,ϕ=πλrd2cos2θ
得到对应峰值的下标,即目标对应的距离与角度:
θ ^ = [ θ ^ 1 , θ ^ 2 , ⋯   , θ ^ K ] r ^ = [ r ^ 1 , r ^ 2 , ⋯   , r ^ K ] \begin{aligned}&\hat{\theta}=[\hat{\theta}_{1},\hat{\theta}_{2},\cdots,\hat{\theta}_{K}]\\&\hat{r}=[\hat{r}_{1},\hat{r}_{2},\cdots,\hat{r}_{K}]\end{aligned} θ^=[θ^1,θ^2,,θ^K]r^=[r^1,r^2,,r^K]
其中 θ ^ \hat{\theta} θ^, r ^ \hat{r} r^分别是对应信号相对于参考阵元的距离和到达角度。
  上述是,2D-MUSIC的方法的流程,对于降维MUSIC来说,需要对其第 k k k个入射的近场信号的导向矢量 a ( θ k , r k ) a\left( \theta_k,r_k\right) a(θk,rk)进行进一步处理。
  根据阵列结构的对称性,导向矢量可以被分解为:
a ( θ k , r k ) = [ e j ( − N ) γ k e j ( − N + 1 ) γ k ⋱ 1 e − j ( − N + 1 ) γ k e − j ( − N ) γ k ] ⋅ [ e j ( − N ) 2 ϕ k e j ( − N + 1 ) 2 ϕ k ⋮ e j ( − 1 ) 2 ϕ k 1 ] = a 1 ( γ k ) a 2 ( ϕ k ) a\left( \theta _k,r_k \right) =\left[ \begin{matrix}{} \text{e}^{\text{j}\left( -N \right) \gamma _k}& & & \\ & \text{e}^{\text{j}\left( -N+1 \right) \gamma _k}& & \\ & & \ddots& \\ & & & 1\\ & & & \\ & \text{e}^{-\text{j}\left( -N+1 \right) \gamma _k}& & \\ \text{e}^{-\text{j}\left( -N \right) \gamma _k}& & & \\ \end{matrix} \right] \cdot \left[ \begin{array}{c} \text{e}^{\text{j}\left( -N \right) ^2\phi _k}\\ \text{e}^{\text{j}\left( -N+1 \right) ^2\phi _k}\\ \vdots\\ \text{e}^{\text{j}\left( -1 \right) ^2\phi _k}\\ 1\\ \end{array} \right] =a_1\left( \gamma _k \right) a_2\left( \phi _k \right) a(θk,rk)= ej(N)γkej(N)γkej(N+1)γkej(N+1)γk1 ej(N)2ϕkej(N+1)2ϕkej(1)2ϕk1 =a1(γk)a2(ϕk)
  其中, γ k = − 2 π d λ sin ⁡ θ k , ϕ k = π d 2 λ r k cos ⁡ 2 θ k \gamma_k =-2\pi \frac{d}{\lambda}\sin \theta_k ,\phi_k=\pi \frac{d^2}{\lambda r_k}\cos ^2\theta_k γk=2πλdsinθk,ϕk=πλrkd2cos2θk,并且 a 1 ( γ k ) a_1\left( \gamma _k \right) a1(γk)仅包含角度信息, a 2 ( ϕ k ) a_2\left( \phi _k \right) a2(ϕk)同时包含角度和距离信息。
将分解后的导向矢量带入原来的2D-MUSIC谱峰搜索器:
P ( θ , r ) = 1 a 2 H ( ϕ ) a 1 H ( γ ) U n U n H a 1 ( γ ) a 2 ( ϕ ) = 1 a 2 H ( ϕ ) Q ( γ ) a 2 ( ϕ ) \begin{aligned} P\left( \theta ,r \right) &=\frac{1}{a_{2}^{\text{H}}\left( \phi \right) a_{1}^{\text{H}}\left( \gamma \right) \boldsymbol{U}_n\boldsymbol{U}_{n}^{\text{H}}{a}_1\left( \gamma \right) {a}_2\left( \phi \right)}\\ &=\frac{1}{{a}_{2}^{\text{H}}\left( \phi \right) {Q}\left( \gamma \right) {a}_2\left( \phi \right)}\\ \end{aligned} P(θ,r)=a2H(ϕ)a1H(γ)UnUnHa1(γ)a2(ϕ)1=a2H(ϕ)Q(γ)a2(ϕ)1
其中, Q ( γ ) = a 1 H ( γ ) U n U n H a 1 ( γ ) Q\left( \gamma \right) =a_{1}^{\text{H}}\left( \gamma \right) \boldsymbol{U}_n\boldsymbol{U}_{n}^{\text{H}}a_1\left( \gamma \right) Q(γ)=a1H(γ)UnUnHa1(γ),考虑到一个恒等式 e 1 H a 2 ( ϕ ) = 1 e_{1}^{\text{H}}a_2\left( \phi \right) =1 e1Ha2(ϕ)=1,而 e 1 = [ 0 , ⋯   , 1 ] T ∈ R M × 1 e_1=\begin{bmatrix}0,\cdots,1\end{bmatrix}^\mathrm{T}\in\mathbb{R}^{M\times1} e1=[0,,1]TRM×1,可以将对 P ( θ , r ) P\left( \theta ,r \right) P(θ,r)的角度距离二维搜索看成一个二次优化问题,该二次规划问题的约束条件是 e 1 H a 2 ( ϕ ) = 1 e_{1}^{\text{H}}a_2\left( \phi \right) =1 e1Ha2(ϕ)=1,目标则是最大化功率 P ( θ , r ) P\left( \theta ,r \right) P(θ,r),即最小化 a 2 H ( ϕ ) a 1 H ( γ ) U n U n H a 1 ( γ ) a 2 ( ϕ ) = a 2 H ( ϕ ) Q ( γ ) a 2 ( ϕ ) a_{2}^{\text{H}}\left( \phi \right) a_{1}^{\text{H}}\left( \gamma \right) \boldsymbol{U}_n\boldsymbol{U}_{n}^{\text{H}}{a}_1\left( \gamma \right) {a}_2\left( \phi \right)={a}_{2}^{\text{H}}\left( \phi \right) {Q}\left( \gamma \right) {a}_2\left( \phi \right) a2H(ϕ)a1H(γ)UnUnHa1(γ)a2(ϕ)=a2H(ϕ)Q(γ)a2(ϕ)
  最终,该二次优化问题可以写成如下标准形式
min ⁡ γ , ϕ a 2 H ( ϕ ) Q ( γ ) a 2 ( ϕ ) s . t . e 1 H a 2 ( ϕ ) = 1 \min_{\gamma,\phi}\boldsymbol{a}_2^\mathrm{H}(\phi)\boldsymbol{Q}(\gamma)\boldsymbol{a}_2(\phi)\quad \\ \mathrm{s.t.} \boldsymbol{e}_1^\mathrm{H}\boldsymbol{a}_2(\phi)=1 γ,ϕmina2H(ϕ)Q(γ)a2(ϕ)s.t.e1Ha2(ϕ)=1
  根据拉格朗日乘数法,可以构造如下代价函数。
L ( γ , ϕ ) = a 2 H ( ϕ ) Q ( γ ) a 2 ( ϕ ) − ω [ e 1 H a 2 ( ϕ ) − 1 ] L(\gamma,\phi)=a_2^\mathrm{H}(\phi)Q(\gamma)a_2(\phi)-\omega[e_1^\mathrm{H}a_2(\phi)-1] L(γ,ϕ)=a2H(ϕ)Q(γ)a2(ϕ)ω[e1Ha2(ϕ)1]
  对 a 2 H ( ϕ ) a_2^\mathrm{H}(\phi) a2H(ϕ)求偏导,可得: ∂ L ( γ , ϕ ) ∂ a 2 ( ϕ ) = 2 Q ( γ ) a 2 ( ϕ ) + ω e 1 = 0 \frac{\partial L(\gamma,\phi)}{\partial\boldsymbol{a}_2(\phi)}=2\boldsymbol{Q}(\gamma)\boldsymbol{a}_2(\phi)+\omega\boldsymbol{e}_1=0 a2(ϕ)L(γ,ϕ)=2Q(γ)a2(ϕ)+ωe1=0,
  对上式进行化简可得,
a 2 ( ϕ ) = − ω 2 Q − 1 ( γ ) e 1 = μ Q − 1 ( γ ) e 1 a_2\left( \phi \right) =-\frac{\omega}{2}Q^{-1}\left( \gamma \right) e_1=\mu Q^{-1}\left( \gamma \right) \boldsymbol{e_1} a2(ϕ)=2ωQ1(γ)e1=μQ1(γ)e1其中, μ = − ω 2 \mu=-\frac{\omega}{2} μ=2ω
  而由于 e 1 H a 2 ( ϕ ) = 1 \boldsymbol{e}_1^\mathrm{H}\boldsymbol{a}_2(\phi)=1 e1Ha2(ϕ)=1,带入上式,可得
a 2 ( ϕ ) = Q ( γ ) − 1 e 1 e 1 H Q ( γ ) − 1 e 1 a_2(\phi)=\frac{Q(\gamma)^{-1}e_1}{e_1^{\mathrm{H}}Q(\gamma)^{-1}e_1} a2(ϕ)=e1HQ(γ)1e1Q(γ)1e1
  因此可得到 γ k {\gamma}_{k} γk的估计值为:
γ ^ k = arg ⁡ min ⁡ γ 1 e 1 H Q ( γ k ) − 1 e 1 = arg ⁡ max ⁡ γ e 1 H Q ( γ k ) − 1 e 1 \hat{\gamma}_{k}=\arg\min_{\gamma}\frac{1}{e_{1}^{\mathrm{H}}Q(\gamma_{k})^{-1}e_{1}}=\arg\max_{\gamma}e_{1}^{\mathrm{H}}Q(\gamma_{k})^{-1}e_{1} γ^k=argγmine1HQ(γk)1e11=argγmaxe1HQ(γk)1e1
  而在信号模型中,我们知道 γ k = − 2 π d sin ⁡ θ k / λ k , k = 1 , 2 , . . . , K \gamma_{k}=-2\pi d\sin\theta_{k}/\lambda_{k},k=1,2,...,K γk=2πdsinθk/λk,k=1,2,...,K,将信号波长归一化后可以知道, − π / 2 ⩽ γ k ⩽ π / 2 -\pi/2\leqslant\gamma_k\leqslant\pi/2 π/2γkπ/2,因此在上述区间内进行一维谱峰搜索即可知道对应的估计值 γ ^ k \hat{\gamma}_{k} γ^k
  将 K K K个估计值 γ ^ k \hat{\gamma}_{k} γ^k带入 a 2 ( ϕ ) a_2(\phi) a2(ϕ)中,即可得到:
a 2 ( ϕ k ) = [ e j ( − N ) 2 ϕ k e j ( − N + 1 ) 2 ϕ k ⋮ e j ( − 1 ) 2 ϕ k 1 ] \boldsymbol{a}_2(\phi_k)=\begin{bmatrix}\mathrm{e}^{\mathrm{j}(-N)^2\phi_k}\\\\\mathrm{e}^{\mathrm{j}(-N+1)^2\phi_k}\\\vdots\\\\\mathrm{e}^{\mathrm{j}(-1)^2\phi_k}\\\\1\end{bmatrix} a2(ϕk)= ej(N)2ϕkej(N+1)2ϕkej(1)2ϕk1
  对上述矩阵顺时针旋转180度可以得到下式:
a 2 ′ ( ϕ k ) = [ e j ( − N ) 2 ϕ k e j ( − N + 1 ) 2 ϕ k ⋮ e j ( − 1 ) 2 ϕ k 1 ] g ^ k = angle ⁡ [ a 2 ′ ( ϕ k ) ] \boldsymbol{a}_2^{\prime}(\phi_k)=\begin{bmatrix}\mathrm{e}^{\mathrm{j}(-N)^2\phi_k}\\\\\mathrm{e}^{\mathrm{j}(-N+1)^2\phi_k}\\\vdots\\\\\mathrm{e}^{\mathrm{j}(-1)^2\phi_k}\\\\1\end{bmatrix}\\ \hat{g}_k=\operatorname{angle}[a_2^{\prime}(\phi_k)] a2(ϕk)= ej(N)2ϕkej(N+1)2ϕkej(1)2ϕk1 g^k=angle[a2(ϕk)]
其中,angle表示取相角。
g ^ k \hat{g}_k g^k可以表示为:
g ^ k = [ 0 ϕ k 4 ϕ k ⋮ ( N − 1 ) 2 ϕ k N 2 ϕ k ] = [ 0 1 4 ⋮ ( N − 1 ) 2 N 2 ] ϕ k = q ϕ k \hat{g}_k=\begin{bmatrix}0\\\phi_k\\4\phi_k\\\vdots\\(N-1)^2\phi_k\\\\N^2\phi_k\end{bmatrix}=\begin{bmatrix}0\\1\\4\\\vdots\\(N-1)^2\\\\N^2\end{bmatrix}\phi_k=\boldsymbol{q}\phi_k g^k= 0ϕk4ϕk(N1)2ϕkN2ϕk = 014(N1)2N2 ϕk=qϕk
其中, q = [ 0 , 1 , 4 , ⋯   , ( N − 1 ) 2 , N 2 ] T \boldsymbol{q}=\begin{bmatrix}0,&1,&4,\cdots,(N-1)^2,N^2\end{bmatrix}^\mathrm{T} q=[0,1,4,,(N1)2,N2]T,可以由最小二乘法求出 ϕ ^ k \hat{\phi}_k ϕ^k:
min ⁡ c k ∥ p c k − g ^ k ∥ F 2 \min_{c_k}\parallel pc_k-\hat{g}_k\parallel_\mathrm{F}^2 ckminpckg^kF2其中, g ^ k = angle [ a 2 ′ ( ϕ k ) ] , p = [ 1 N + 1 , q ] , c k = [ c k 0 , ϕ ^ k ] T ∈ R 2 × 1 , c k 0 是最小二乘法的损失, ϕ ^ k 为待估计的参数, c k 的解为: \hat{g}_{k}=\text{angle}\bigg[ \boldsymbol{a}_{2}^{\prime} (\phi_{k}) \bigg],\quad\boldsymbol{p}=[1_{N+1},\boldsymbol{q}] ,\quad\boldsymbol{c}_{k}=[c_{k0},\hat{\phi}_{k} ]^{\mathrm{T}}\in\mathbb{R}^{2\times1},c_{k0}是最小二乘法的损失,\hat{\phi}_{k}为待估计的参数,\boldsymbol{c}_{k}的解为: g^k=angle[a2(ϕk)],p=[1N+1,q],ck=[ck0,ϕ^k]TR2×1,ck0是最小二乘法的损失,ϕ^k为待估计的参数,ck的解为:
c k = ( p T p ) − 1 p T g ^ k \boldsymbol{c_k}=(p^\mathrm{T}p)^{-1}p^\mathrm{T}\hat{g}_k ck=(pTp)1pTg^k
  上述过程中,角度和距离参数是自动配对的,最终可以得到角度的估计值 θ ^ k \hat{\theta}_{k} θ^k和距离的估计值 r ^ k \hat{r}_{k} r^k
θ ^ k = − arcsin ⁡ ( γ ^ k λ k 2 π d ) r ^ k = π d 2 λ k ϕ ^ k cos ⁡ 2 θ ^ k \hat{\theta}_{k}=-\arcsin\left(\frac{\hat{\gamma}_k\lambda_k}{2\pi d}\right)\\\hat{r}_{k}=\frac{\pi d^2}{\lambda_k\hat{\phi}_k}\cos^2\hat{\theta}_k θ^k=arcsin(2πdγ^kλk)r^k=λkϕ^kπd2cos2θ^k

  与上文2d-MUSIC算法相同,使用同样参数的信号,利用2个近场非相干信号源进行仿真,其距离参考阵元的距离 r k r_k rk和到达角 θ k \theta_k θk分别为 ( 20 ° , 1.85 λ ) \left( 20°,1.85\lambda \right) (20°,1.85λ) ( 40 ° , 4.8 λ ) \left( 40°,4.8\lambda \right) (40°,4.8λ),阵元间距 d = λ / 4 d=\lambda/4 d=λ/4,信噪比 S N R = 20 d B SNR=20dB SNR=20dB,单边阵元数 N = 4 N=4 N=4,快拍数 K = 2000 K=2000 K=2000
matlab代码如下:

clc
clear all
close all
%%%%%%%%%降维MUSIC算法%%%%%%%%%

derad = pi/180; %角度->弧度
M = 2; % 信源数目

lamta=1; %波长1m

Nx =4; % 单边阵元个数
Mx=2*Nx+1; %总阵元个数
d =lamta/4; % 阵元间距

D = (Mx-1)*d; %阵列孔径
distance_left = 0.62*sqrt((D.^3)/lamta);%距离搜索的下界
distance_right = 2*(D.^2)/lamta;%距离搜索的上界

xita_k = [20 40].*derad; % x轴待估计角度
snr =20; % 信噪比

K =2000; % 快拍数
r_k=[1.85*lamta,4.8*lamta]; %信号源距离
m=-Nx:1:Nx;%x轴入射点位
%%%%%%构建信号模型%%%%%
gama_k1=-2*pi*d.*sin(xita_k)./lamta;
gama_k1=gama_k1';
phi_k=pi*d*d.*cos(xita_k).*cos(xita_k)./(r_k.*lamta);
phi_k=phi_k';

A_x=exp(1i*(gama_k1.*m+phi_k.*m.*m));
S=randn(M,K);
X1=A_x'*S;
X1=awgn(X1,snr,'measured'); %将白色高斯噪声添加到信号中
%%%%%获取信号噪声子空间%%%%
Rxx= X1*X1'/K;%获取接收信号的协方差矩阵
% 特征值分解
[EV,D]=eig(Rxx); %特征值分解
EVA=diag(D)'; %将特征值矩阵对角线提取并转为一行
[EVA,I]=sort(EVA); %将特征值排序 从小到大
EV=fliplr(EV(:,I)); % 对应特征矢量排序
Un=EV(:,M+1:end);%获取x轴接收数据的噪声子空间

num_distance=0;

n=-Nx:1:0;
for iang=1:360
    angleall(iang)=(iang-180)/2;
    gama_k=-2*pi*d.*sind(angleall(iang))./lamta;
    gama_k=gama_k';

    A1_x=zeros(2*Nx+1,Nx+1);
    for k=1:1:Nx+1
        A1_x(k,k)=exp(1i*(k-Nx-1).*gama_k);
    end
    for k=1:1:Nx
        A1_x(2*Nx+2-k,k)=exp(1i*(Nx+1-k).*gama_k);
    end
    A2_x=exp(1i*phi_k.*n.*n);
    A2_x=A2_x';
    Q=A1_x'*Un*Un'*A1_x;
    V=A2_x'*Q*A2_x;

    e1=zeros(length(n)-1,1);
    e1=[e1;1];
    gama_hateqe1=e1'*inv(Q)*e1;

    gama_hateqe(iang)=gama_hateqe1;
    gama_hateqe=abs(gama_hateqe);
    %P_search(num_distance,iang)=1/abs(A_x'*Un*Un'*A_x);

end


[pks locs]=findpeaks(gama_hateqe);
[pks_max2 locs_max2i]=maxk(pks,2);
loc_max2=locs(locs_max2i);
gama_hat=-2*pi*d.*sind(angleall(loc_max2))./lamta;



A1_x_pie1=zeros(2*Nx+1,Nx+1);
for k=1:1:Nx+1
    A1_x_pie1(k,k)=exp(1i*(k-Nx-1)*gama_hat(1));
end
for k=1:1:Nx
    A1_x_pie1(2*Nx+2-k,k)=exp(1i*(Nx+1-k)*gama_hat(1));
end
Q_pie1=A1_x_pie1'*Un*Un'*A1_x_pie1;
A2_x_pie1=inv(Q_pie1)*e1/(e1'*inv(Q_pie1)*e1);
A2_x_pie1=A2_x_pie1(end:-1:1);%翻转矩阵180度
g_hat1=angle(A2_x_pie1);
g_hat1=fliplr(n)'.*fliplr(n)'*g_hat1(2);


A1_x_pie2=zeros(2*Nx+1,Nx+1);
for k=1:1:Nx+1
    A1_x_pie2(k,k)=exp(1i*(k-Nx-1)*gama_hat(2));
end
for k=1:1:Nx
    A1_x_pie2(2*Nx+2-k,k)=exp(1i*(Nx+1-k)*gama_hat(2));
end
Q_pie2=A1_x_pie2'*Un*Un'*A1_x_pie2;
A2_x_pie2=(inv(Q_pie2)*e1)/(e1'*inv(Q_pie2)*e1);
A2_x_pie2=A2_x_pie2(end:-1:1);
g_hat2=angle(A2_x_pie2);
g_hat2=fliplr(n)'.*fliplr(n)'*g_hat2(2);

p=ones(Nx+1,1);
q=[];
for i=1:1:Nx+1
    q(i)=(i-1)^2;
end
q=q';
p=[p,q];


ck1=inv(p'*p)*p'*g_hat1;
ck2=inv(p'*p)*p'*g_hat2;
phi1=-ck1(2);
phi2=-ck2(2);
%a=gama_hat(1)*lamta/(2*pi*d);
%角度估计值
theta1=-(-asind(gama_hat(1)*lamta/(2*pi*d)))
theta2=-(-asind(gama_hat(2)*lamta/(2*pi*d)))
%距离估计值
r1=pi*d^2/(lamta*phi1)*(cosd(theta1)^2)
r2=pi*d^2/(lamta*phi2)*(cosd(theta2)^2)

运行结果中,角度估计值如下图所示:
在这里插入图片描述
距离估计值如下图所示:
在这里插入图片描述
距离估计值还是有一定的误差,该方法采用一维搜索的方式,精度不如二维搜索,但是大大提高了算法的实时性,损失了一定的估计精度。

### 回答1: 近场DOA估计是指根据接收到的信号波形数据,通过计算来确定信号的入射方向。在MATLAB中,我们可以使用各种算法和工具箱来实现近场DOA估计。 首先,我们需要收集和处理接收到的信号波形数据。这可以通过麦克风阵列或传感器阵列收集到的信号进行。可以使用MATLAB中的信号处理工具箱中的函数来处理和预处理这些数据,如滤波、降噪和预加重等。 接下来,我们可以使用经典的方法进行近场DOA估计,例如波达法(波束形成法),最小二乘法(LS)或扩展的最小二乘法(ESPRIT)。在MATLAB中,我们可以使用DSP System Toolbox中的相关函数来实现这些方法。这些函数可以计算信号的角度、波束权重和相关矩阵等。 此外,还可以使用基于机器学习的方法进行近场DOA估计。例如,可以使用神经网络或支持向量机等算法来训练模型,以将接收到的信号波形数据映射到目标信号的角度。MATLAB具有强大的机器学习和深度学习工具箱,可以帮助我们训练和应用这些模型。 最后,我们还可以可视化和分析估计的结果。MATLAB提供了丰富的绘图和数据分析工具,我们可以使用这些工具来绘制角度谱、波束图和方位图等,以便更好地理解并评估估计的结果。 总体而言,MATLAB是一个功能强大且灵活的工具,可用于实现近场DOA估计。它提供了各种计算方法和工具箱,使我们能够有效地处理和分析接收到的信号波形数据,并估计信号的入射方向。 ### 回答2: 近场DOA(方向性角度)估计是一种用来确定信号源方向的技术。它在很多领域,如无线通信、声音处理和雷达等方面都有广泛的应用。 在MATLAB中,我们可以使用一些信号处理工具箱来实现近场DOA估计。其中最常用的是通过麦克风阵列接收信号,然后对收到的信号进行处理和分析。 首先,我们需要收集麦克风阵列接收到的信号数据。可以将阵列的每个麦克风的输出信号都保存为一个向量。然后,我们可以利用这些数据进行进一步处理。 接下来,我们可以使用波束形成技术对收到的信号进行处理,以增强感兴趣的信号,并抑制其他方向的噪声。这可以通过将每个麦克风的输出信号加权相加来实现。 在获得波束形成输出之后,我们可以使用一些经典的DOA估计算法估计信号源的方向。其中,最常用的算法包括MVDR(最小方差无失真响应)算法MUSIC(多信号分类)算法和ESPRIT(信号参数估计算法等。 具体实现时,我们可以将处理好的信号数据输入到这些算法中,并得到信号源的方向估计结果。这些结果可以是角度的估计值,也可以是概率分布的形式。 总结而言,近场DOA估计可以通过MATLAB中的信号处理工具箱来实现。我们可以利用麦克风阵列接收信号,并通过波束形成和经典的DOA估计算法来准确估计信号源的方向。这对于实现无线通信、声音处理和雷达等应用非常有意义。 ### 回答3: 近场DOA(Direction of Arrival)估计是一种用于定位信号源方向的技术。在MATLAB中,可以使用多种方法来进行近场DOA估计。 一种常用的方法是通过阵列信号处理技术,使用麦克风阵列接收到的信号进行分析。首先,可以通过使用阵列中的各个麦克风之间的时延差来估计信号源到达各个麦克风的时间差。然后,使用时延差信息计算出信号源相对于阵列的角度。最后,可以通过进一步的处理得到信号源的准确方向。 另一种常用的方法是通过利用DOA估计算法进行信源方向估计MATLAB提供了多种用于DOA估计的函数和工具箱,如MUSIC算法、ESPRIT算法等。这些算法基于信号的统计特性,通过处理接收信号的空间谱信息,推测信号源的方向。我们只需要将接收到的信号提供给这些函数进行处理,即可得到信号源的方向估计。 在MATLAB中,我们可以通过编写代码来实现这些方法,或者使用已经封装好的函数和工具箱简化操作。MATLAB提供了丰富的文档和示例代码,用于指导用户进行近场DOA估计。用户只需根据具体的需求和数据特点选择适合的方法和函数,即可完成近场DOA估计。 总之,MATLAB提供了多种方法和工具用于近场DOA估计。用户可以根据具体需求选择合适的方法和函数,并通过编写代码或使用现有函数来实现估计
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值