二维平面阵列波束赋形原理和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_len
    for j = 1:1:phi_len
        theta = 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_len
    for j = 1:1:phi_len
        theta = 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°,阵列排布如下。

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

        俯视图如下。

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

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

  • 46
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔袭的算法工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值