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

1 波束赋形基本原理

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

二维平面阵列波束赋形原理和Matlab仿真_第1张图片

图1 波束赋形基本原理

2 阵列信号模型

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

二维平面阵列波束赋形原理和Matlab仿真_第2张图片

图2 天线三维坐标系

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

        二维平面阵列波束赋形原理和Matlab仿真_第3张图片

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

        

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

        二维平面阵列波束赋形原理和Matlab仿真_第4张图片

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

        二维平面阵列波束赋形原理和Matlab仿真_第5张图片

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

        二维平面阵列波束赋形原理和Matlab仿真_第6张图片

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

        

        

        其中λ为波长。

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

        

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

        

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

        二维平面阵列波束赋形原理和Matlab仿真_第7张图片

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

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平面阵,阵列排布如下。

二维平面阵列波束赋形原理和Matlab仿真_第8张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第9张图片

       俯视图如下。

二维平面阵列波束赋形原理和Matlab仿真_第10张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第11张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第12张图片

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°,阵列排布如下。

二维平面阵列波束赋形原理和Matlab仿真_第13张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第14张图片

        俯视图如下。

二维平面阵列波束赋形原理和Matlab仿真_第15张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第16张图片

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

二维平面阵列波束赋形原理和Matlab仿真_第17张图片

你可能感兴趣的:(雷达信号处理,人工智能,自动驾驶,目标检测,matlab,物联网)