基于L型阵列的2维DOA估计

摘要:在实际的雷达目标DOA估计过程中,局限于1维DOA估计显然是不能满足现代雷达系统探测目标的要求,例如主流的4D雷达成像,不仅要估计目标的距离、速度、方位(水平)角外,还要估计目标的俯仰角,然而我们要同时获得目标的水平-俯仰向信息,在硬件层面,就需要拥有两个维度的天线。因此,本期内容通过L型阵列,并采用Music算法进行谱峰扫描实现目标的水平-俯仰向信息的估计,希望对各位读者带来帮助。

1 . L形阵列

        如图1所示为L形阵列的阵列结构,有M+N-1个阵元。此L型阵列由x轴上阵元数为N的均匀线阵和y轴上阵元数为M的均匀线阵构成,阵列间距为d。假设空间有K个信源照射到此阵上。其二维波达方向为(θk,ϕk),k = 1,2,3,…,K,其中,θkϕk分别表示第k个信源的俯仰角和方位角。

图 1 L形阵列的阵列结构

假设入射到此阵列上的信源数为K,则x轴上N个阵元对应的导向矩阵为 

y轴上M个阵元对应的导向矩阵为 

2. MUSIC算法 

        关于MUSIC算法是一种非常经典的超分辨率算法,有关于它的原理在此不在赘述。我们直接给出MUSIC算法表达式:

式中,a(ϕ,θ)表示二维搜索的导向矢量,Un表示噪声子空间。2D MUSIC算法就是在水平向和方位向两个维度进行谱峰扫描,从而确定(θk,ϕk)的值。 

3. 仿真代码 

       仿真环境:Matlab2021b

       阵列单元总数:Nx = 12,Ny = 8

       波源方向: (15,60)、(40,17)、(34,27)

       信噪比(SNR): 40 dB 

       仿真代码:

%% Author  : Poulen
%% DAta    : 2023.12.18

%%  简介:该代码主要分享如何实现2维DOA估计问题。截至目前为止,基于1维DOA估计问题的理论已经相对成熟,因此在这下面,基于MUSIC算法完成L型阵列目标的2维DOA估计,
%%        同时这也是做2维DOA估计的基础,希望可以为读者带来启示作用。

clear
close all;
clc

Nx  =   12;
Ny  =    8;
c   =  physconst('Lightspeed');
lambda = c/77e9;    %% 波长
deta   =  lambda/2;    %% 天线间隔
dx     = 0:deta:(Nx-1)*deta;
dy     = 0:deta:(Ny-1)*deta;
snapshot = 512;     %% 信号采样长度

source = [  15,60;
            40,17;
            34,27]; %% 波达方向(方位向,俯仰向)

source_num = size(source,1);
Ax = zeros(Nx,source_num);
Ay = zeros(Ny,source_num);
for i = 1:source_num
    Ax(:,i) = exp(1j*2*pi/lambda*dx(:)*cosd(source(i,1))*sind(source(i,2)));
    Ay(:,i) = exp(1j*2*pi/lambda*dy(:)*sind(source(i,1))*sind(source(i,2)));
end

S = randn(source_num,snapshot);  %产生随机信号
A = [Ax.' Ay.'].';               %合并x、y轴方向上的导向矢量
Z = A*S;                         %L型阵列接收的数据
% X = Ax*S;                      %%x轴方向阵列接收的数据
% Y = Ay*S;                      %%y轴方向阵列接收的数据
% Z = [X;Y];


%%  加入噪声
SNR = 40; %单位dB
Z = Z +(randn(size(Z)).*std(Z))/db2mag(SNR);

R = (1/snapshot)*Z*conj(Z.');
[V,D] = eig(R);             %在matalb2021版本以上,特征值已经从小到大排列
Un = V(:,1:end-source_num);          %提取小特征对应的特征向量作为噪声子空间 M*(M-K)

Azimuth = 0:0.1:60;
Pitch   = 0:0.1:90;
P2D = zeros(length(Azimuth),length(Pitch));
for n = 1:length(Azimuth)
    for m = 1:length(Pitch)
        ax = exp(1j*2*pi/lambda*dx(:)*cosd(Azimuth(n))*sind(Pitch(m)));
        ay = exp(1j*2*pi/lambda*dy(:)*sind(Azimuth(n))*sind(Pitch(m)));
        a  = [ax.' ay.'].';
        P2D(n,m) = 1/(a'*(Un*Un')*a);
    end
end
Pazimuth = sum(abs(P2D),2); 
Ppitch   = sum(abs(P2D),1);

%%  方位-俯仰向2D图
figure;
mesh(Pitch,Azimuth,db(P2D));
xlabel('Pitch(°)');
ylabel('Azimuth(°)');
title('方位-俯仰向图');

%%  绘制方位向剖面
figure;
plot(Azimuth,db(Pazimuth),'LineWidth',1.5);
title('目标方位角剖面');
xlabel('Azimuth(°)');
ylabel('幅度(dB)');

%%  绘制俯仰向剖面
figure;
plot(Pitch,db(Ppitch),'LineWidth',1.5);
title('目标俯仰角剖面');
xlabel('Azimuth(°)');
ylabel('幅度(dB)');

仿真结果:

          根据仿真结果,可以看出,不管是联合水平-方位向结果,还是水平向和俯仰向剖面,都得到了很好的估计效果。通过该例子,主要是为了提醒大家,要学会举一反三,不管是什么类型的阵列,主要找准他们的方向矩阵,并通过谱峰扫描就可以估计得到目标的水平-俯仰信息。另外,希望本期的内容可以帮助到迷茫的大家,谢谢!

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值