[阵列信号处理]近场DOA估计算法-2DMUSIC方法


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

背景

  近场方向到达(Direction of Arrival, DOA)估计是阵列信号处理领域的一个重要研究课题。DOA估计可以分为远场DOA估计和近场DOA估计。在近场DOA估计中,由于信号源距离阵列较近,因此信号的波前会呈现出球面波特性,这与远场情况下的平面波假设不同。近场DOA估计在很多实际应用中都非常重要,例如,无线通信、雷达、声纳、地震学以及生物医学等领域。
  近场信号和远场信号有以下特点:

  1. 近场与远场的区别
    • 近场区域:信号源到阵列的距离远小于阵列的孔径大小,波前是球面波。
    • 远场区域:信号源到阵列的距离远大于阵列的孔径大小,波前可以近似为平面波。
  2. 近场DOA估计的挑战
    • 近场效应导致信号波前的复杂性增加。
    • 需要精确估计信号源的距离和角度信息。
    • 阵列校准和误差的影响更加敏感。
  3. 近场DOA估计算法
    • 基于子空间的方法:如Music算法、ESPRIT算法等,这些算法需要修改以适应近场条件。
    • 基于最大似然的方法:考虑信号源距离的影响,通过最大化似然函数来估计DOA。
    • 基于稀疏表示的方法:利用信号的稀疏性质,通过求解稀疏重构问题来估计DOA。
    • 基于深度学习的方法:近年来,深度学习技术也被应用于DOA估计,通过训练神经网络来直接从数据中估计DOA。

近场信号模型

  接下来介绍近场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

2D-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的算法流程可以表示如下:
  Step1:根据采样得到的信号矩阵构造接收信号的协方差矩阵的估计值。
  Step2:对接收信号的协方差矩阵进行特征值分解,然后按照特征值的大小顺序,把与信号个数相等的较大的特征值和对应的特征向量看成信号子空间,把剩下的对应部分看成噪声子空间 U n U_n Un
  Step3:根据噪声特征向量和信号向量的正交性,构造空间谱峰搜索函数,对其进行谱峰搜索可以得到 K K K组配对的信源目标角度与距离参数的估计结果。
接下来利用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
%%%%%%近场2D-MUSIC算法
derad = pi/180; %角度->弧度
M = 2; % 信源数目

lamta=1;% 信号波长
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_k=-2*pi*d.*sin(xita_k)./lamta;
gama_k=gama_k';
phi_k=pi*d*d.*cos(xita_k).*cos(xita_k)./(r_k.*lamta);
phi_k=phi_k';
A_x=exp(1i*(gama_k.*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;
for distance=0.01:0.01:distance_right
num_distance=num_distance+1;
for iang=1:360
angle(iang)=(iang-180)/2;
gama_k=-2*pi*d.*sind(angle(iang))./lamta;
gama_k=gama_k';
phi_k=pi*d*d.*cosd(angle(iang)).*cosd(angle(iang))./(distance.*lamta);
phi_k=phi_k';

A_x=exp(1i*(gama_k.*m+phi_k.*m.*m));
A_x=A_x';
P_search(num_distance,iang)=1/abs(A_x'*Un*Un'*A_x);

end
end

distance=0.01:0.01:distance_right;
angle(iang)=(iang-180)/2;

[distance,angle]=meshgrid(distance,angle);
%绘制三维图
mesh(distance',angle',P_search);
yticks([-90:10:90]);
ylabel('角度/°');
xticks([0:0.5:distance_right]);
xlabel('r/\lambda');
figure
contour(distance',angle',P_search)
yticks([-90:10:90]);
ylabel('角度/°');
xticks([0:0.5:distance_right]);
xlabel('r/\lambda');

  画出相应的三维谱峰搜索图和二维等高线图,可以看出算法可以有效估计信源的角度和距离参数,且参数自动配对。
三维谱峰搜索图
二维等高线图

  • 35
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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估计。用户可以根据具体需求选择合适的方法和函数,并通过编写代码或使用现有函数来实现估计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值