二维平面阵列波束赋形原理和Matlab仿真

1 波束赋形基本原理

        实现波束赋形的最基本的方法是对各个天线阵元的信号进行适当延迟后相加,使目标方向的信号同相叠加得到增强,而其他方向均有不同程度的削弱,该方法通常用于模拟信号.数字信号可以通过对各个天线阵元的信号乘以复加权系数后相加,如图1

图1 波束赋形基本原理

2 阵列信号模型

        将该天线阵放置于XYZ坐标中,阵面置于YOZ平面上,建立如图2所示的坐标系。阵面左下角天线位于坐标原点,将坐标原点阵元设为参考阵元,计算每个阵元相对于该参考阵元的入射波程差,从而来计算每个阵元接收的回波信号。

图2 天线三维坐标系

        设阵面上第i行第i列阵元Ai的直角坐标为,极坐标为,由于阵面在YOZ平面,所以,两坐标的关系可以表示为:

        

        目标S的直角坐标为,极坐标为,那么两坐标之间的关系可以表示为:

        

        极坐标用直角坐标表示即可得到:

        

        目标S与阵元Ai之间的距离为:

        

        那么,信号从目标S到达阵元Ai与到达阵面坐标原点阵元的波程差和相位差分别为:

        

        由此可得,信号从目标S到达阵面上第m行第n列的阵元与到达坐标原点阵元的波程差和相位差分别为

        

        

        其中λ为波长。

        将上式波程差带入导向矢量的定义式中,即可得第m行第n列阵元的导向矢量为:

        

        设坐标原点出阵元接收到的回波信号为s(t),则第m行第n列阵元接收到的目标回波信号为

        

        那么,平面阵天线系统接收目标回波信号经过模拟波束合成后进入主通道的信号为:

        

        上式即为仿真中所采用的回波信号模型。

3二维阵列波束赋形仿真

       根据上述理论推导可以仿真任意平面阵列的方向图,这里对两种典型的阵列(矩形平面阵列和圆形阵列)进行Matlab仿真,其余类型的阵列在此基础上修改即可。

3.1 矩形平面阵列

       Matlab仿真代码如下。

% 均匀面阵波束形成
clear;clc;close all;
dx = 0.5;                               % x方向阵元间距,这里表示0.5λ
dy = 0.5;                               % y方向阵元间距,这里表示0.5λ
theta0 = -10;                           % 目标俯仰角度,-90~90
phi0 = 10;                              % 目标方位角度,-90~90
alpha_x = 2*pi*sind(phi0)*cosd(theta0);      % x方向相位差
alpha_y = 2*pi*sind(theta0);           % y方向相位差        
M = 20;                                 % x方向阵元数
N = 20;                                 % y方向阵元数                      
X = (0:1:M-1)*dx;                          % x方向阵列排布
Y = (0:1:N-1)*dy;                          % y方向阵列排布
X2=kron(ones(1,N),X);
Y2=kron(Y,ones(1,M));figure;
plot(X2,Y2,'.');axis equal;grid on;
title('天线阵');xlabel('距离(m)');ylabel('距离(m)');ax = exp(1i*X*alpha_x);                 % x方向导向矢量
ay = exp(1i*Y*alpha_y);                 % y方向导向矢量
axy = kron(ax,ay);                      % 矩形阵面导向矢量dtheta = 0.2;
dphi = 0.2;                                 % 扫描角度间隔
theta_scan = -90:dtheta:90;                 % 俯仰扫描角度,-90~90
phi_scan = -90:dphi:90;                     % 方位扫描角度,-90~90
theta_len = length(theta_scan);
phi_len = length(phi_scan);
beam = zeros(theta_len, phi_len);           % 初始化波束
for i = 1:1:theta_lenfor j = 1:1:phi_lentheta = theta_scan(i);phi = phi_scan(j);Fx = exp(1i*X*2*pi*sind(theta)*cosd(phi));Fy = exp(1i*Y*2*pi*sind(phi));Fxy = kron(Fx,Fy); beam(i,j) = abs(((axy.')'*(Fxy.')));end
end
beam_db = 20*log10(beam/max(max(beam)));figure;
mesh(phi_scan, theta_scan, beam_db);
title('矩形面阵方向图');
xlabel('俯仰角');ylabel('方位角');zlabel('幅度(dB)');
axis([-100 100 -100 100 -80 10]);figure;
imagesc(theta_scan,phi_scan,beam_db);
colorbar;axis tight;shading interp;
xlabel('俯仰角');ylabel('方位角');zlabel('幅度(dB)');
title('矩形面阵方向图俯视');figure;
plot(theta_scan,beam_db(1+(phi0+90)/0.2,:));           % 对应方位角度切面
xlabel('俯仰角/度');ylabel('幅度/dB');
grid on;hold on;
plot([theta0,theta0],ylim,'m-.');
title('俯仰面方向图');
axis([-100 100 -80 0]);figure;
plot(phi_scan,beam_db(:,1+(theta0+90)/0.2));           % 对应俯仰角度切面
xlabel('方位角/度');ylabel('幅度/dB');
grid on;hold on;
plot([phi0,phi0],ylim,'m-.');
title('方位面方向图');
axis([-100 100 -80 0]);

        仿真使用20*20平面阵,阵列排布如下。

       根据上述矩形面阵公式做仿真,得到下述的三维空间方向图。

       俯视图如下。

       根据对应方位角的切面得到俯仰面方向图。

        根据对应俯仰角的切面得到方位面方向图。

3.2 圆环阵列

        Matlab仿真代码如下。

% 均匀面阵波束形成
clear;clc;close all;
theta0 = 10;                            % 目标俯仰角度,-90~90
phi0 = 10;                              % 目标方位角度,-90~90
alpha_x = 2*pi*sind(theta0)*cosd(phi0);      % x方向相位差
alpha_y = 2*pi*sind(phi0);                   % y方向相位差        
R = 4;                                 % 半径为4λ
dangle = 10;
angle = 0:dangle:360;                   % 所有角度
X = R*cosd(angle);                          % x方向阵列排布
Y = R*sind(angle);                          % y方向阵列排布figure;
plot(X,Y,'o');axis equal;grid on;
title('天线阵');xlabel('距离(m)');ylabel('距离(m)');ax = exp(1i*X*alpha_x);                % x方向导向矢量
ay = exp(1i*Y*alpha_y);                % y方向导向矢量
axy = ax.*ay;               % 矩形阵面导向矢量dtheta = 0.2;
dphi = 0.2;                                     % 扫描角度间隔
theta_scan = -90:dtheta:90;                     % 俯仰扫描角度,0~90
phi_scan = -90:dphi:90;                         % 方位扫描角度,-90~90
theta_len = length(theta_scan);
phi_len = length(phi_scan);
beam = zeros(theta_len, phi_len);       % 初始化波束
for i = 1:1:theta_lenfor j = 1:1:phi_lentheta = theta_scan(i);phi = phi_scan(j);Fx = exp(1i*X*2*pi*sind(theta)*cosd(phi));Fy = exp(1i*Y*2*pi*sind(phi));Fxy = Fx.*Fy; beam(i,j) = abs(((axy.')'*(Fxy.')));end
end
beam_db = 20*log10(beam/max(max(beam)));figure;
mesh(phi_scan, theta_scan, beam_db);
title('圆形阵列方向图');
xlabel('俯仰角');ylabel('方位角');zlabel('幅度(dB)');
axis([-100 100 -100 100 -80 10]);figure;
imagesc(theta_scan,phi_scan,beam_db);
colorbar;axis tight;shading interp;
xlabel('俯仰角');ylabel('方位角');zlabel('幅度(dB)');
title('圆形阵列方向图俯视');figure;
plot(theta_scan,beam_db(1+(phi0+90)/0.2,:));           % 对应方位角度切面
xlabel('俯仰角/度');ylabel('幅度/dB');
grid on;hold on;
plot([theta0,theta0],ylim,'m-.');
title('俯仰面方向图');
axis([-100 100 -50 0]);figure;
plot(phi_scan,beam_db(:,1+(theta0+90)/0.2));           % 对应俯仰角度切面
xlabel('方位角/度');ylabel('幅度/dB');
grid on;hold on;
plot([phi0,phi0],ylim,'m-.');
title('方位面方向图');
axis([-100 100 -40 0]);

        仿真使用圆形阵列,半径为4λ,间隔10°,阵列排布如下。

        根据上述圆形阵列公式做仿真,得到下述的三维空间方向图。

        俯视图如下。

        根据对应方位角的切面得到俯仰面方向图。

        根据对应俯仰角的切面得到方位面方向图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442442.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pdf高亮显示

现在前端pdf需求越来越多,比如发票的显示,文件的显示,怎么实现具体步骤百度一下吧,这里不做详细介绍,主要记录下遇到的问题 1.页面pdf已经看到了,但是 iframe.contentWindow.PDFViewerApplication显示unde…

C++ 数论相关题目,博弈论,SG函数,集合-Nim游戏

给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S 。 现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S ,最后无法进行操作的人视为失败。 问如果两人都采用最优策略,…

ArcGIS学习(二)属性表的基本操作

ArcGIS学习(二)属性表的基本操作 1.查看属性表 ArcGIS是处理空间数据的平台。对于空间数据,大家可以理解成它是由两个部分构成:1.一个是空间形体,也就是点、线、面三种。线又可以分为直线、曲线,面又分为圆形、正方形、不规则形体等;2.另外一个部分是空间形体所附带的…

Redis常见数据类型[上]

目录 前言: 基本全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构和内部编码 内部编码: 单线程架构 引出单线程模型: 为什么单线程还这么快? String字符串 字符串数据类型: 常见命令: S…

蓝桥杯---牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后…

【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器:windows11 x64 python版本:3.11 一、安装Django 安装步骤非常简单,使用pip安装就行 pip install django安装完成之后,python的 Scripts 文件夹下,会多一个 django-admin.exe (管理创建django项目的工具)。…

多图预警!?是时候汇总Python-R的颜色主题包了

今天这篇推文我们系统介绍下颜色主题,虽然之前也有介绍过一些优秀的配色网站,也有搭配好的颜色主题可以直接参考,但有没有直接供Python或者R绘图直接使用的关于颜色设置的第三方包呢?这边推文将较为详细的介绍关于Python的R的颜色主题包&…

k8s从私有库harbor中拉取镜像

一、前言 Docker镜像是构建应用程序的基础。然而,许多组织和开发团队希望保留他们的Docker镜像在私有仓库中,并从中拉取镜像,而不是从公共Docker Hub中下载。这样做的原因有很多,包括: 1. 安全性:私有仓库可…

哪种小型洗衣机好用?小型洗衣机十大排名

也许在我们的以往的印象中,家庭的洗衣机一般的体积都相对的大,而且占用的空间也比较大,在安装放置方面上也是非常的复杂。另外,对于小户型的用户而言,如果使用了普通的大型洗衣机,难免以后会出现很多不方便…

rust学习基于tokio_actor聊天服务器实战(一 )

前言 tokio是Rust中使用最广泛的异步Runtime,它性能高、功能丰富、便于使用,是使用Rust实现高并发不可不学的一个框架 Actor 背后的基本思想是产生一个独立的任务,该任务独立于程序的其他部分执行某些工作。 通常,这些参与者通过使…

EPSON RC 机器人-第一个程序

创建项目 有机械人且用USB线连接好。可以USB。没有真机的选择 C4 Sample 可以运行程序。 否刚会提示【不能连接到控制器,未安装USB驱动器】 代码 按F5打开运行窗口 再点【开始】 点 【是】,查看运行结果

2024新鲜出炉 Java集合常见面试题总结(上)

2024新鲜出炉 Java集合常见面试题总结(上) 文章目录 2024新鲜出炉 Java集合常见面试题总结(上)集合概述Java 集合概览说说 List, Set, Queue, Map 四者的区别?集合框架底层数据结构总结ListSetQueueMap 如何选用集合?为什么要使用集合? ListArrayList 和…