雷达相控阵波束形成Matlab仿真

图1 雷达相控阵波束形成仿真(未加窗)

图2 雷达相控阵波束形成仿真(加窗)

clear all;

close all;

clc;

%% 设置雷达系统参数

c=3e8;% 光速(m/s)

fs=20e9;% 采样率

f0=4.5e9;% 雷达工作频率

t=0.5e-6;% 信号脉宽

lambda=c/f0;% 波长

d=lambda*2;% 阵元间距

tt=0:1/fs:t;% 时间刻度

%% 生成点频信号

y_cos=cos(2*pi*f0.*tt);

theta0_deg=0;% 设置波束指向角度

theta0=-theta0_deg*pi/180;

%% 计算阵列内部相位偏移

N=16;% 设置阵元数量

theta=zeros(1,N);% 初始化相位偏移数组

% 计算每个阵元的相位偏移

for n=1:N

theta(n)=(n-1)*2*pi*d*sin(theta0)/lambda;

end

theta_deg_0=-90:0.1:90;% 角度范围

theta_deg=theta_deg_0.*pi/180;

N_theta=length(theta_deg);% 计算角度数量

E=zeros(1,N_theta); % 普通波束形成结果

E_w=zeros(1,N_theta); % 加权波束形成结果

Nt=length(tt);

%% 对每个角度进行波束形成计算

for m=1:N_theta

sum=zeros(1,Nt); % 普通波束形成

sum_w=zeros(1,Nt); % 加权波束形成

w_hamming=hamming(N); % 生成汉明窗权重

% 对每个阵元进行信号合成

for n=1:N

xin_w=w_hamming(n)*cos(2*pi*f0*tt+(n-1)*2*pi*d*sin(theta_deg(m))/lambda+theta(n));% 加权信号(使用汉明窗)

xin=cos(2*pi*f0*tt+(n-1)*2*pi*d*sin(theta_deg(m))/lambda+theta(n));% 普通信号

sum=sum+xin;% 累加信号

sum_w=sum_w+xin_w;

end

E(m)=max(abs(sum)); % 普通波束形成

E_w(m)=max(abs(sum_w)); % 加权波束形成

end

% 绘制方向图

figure

E=20*log10(E/max(E));

plot(theta_deg_0,E,'k','linewidth',1.5);% 绘制方向图

xlim([-40 40]);

xlabel('角度(°)');

ylabel('幅度(dB)');

title('直接波束形成结果(阵元数16,d为2倍波长)');

figure

E_w=20*log10(E_w/max(E_w));

plot(theta_deg_0,E_w,'k','linewidth',1.5);% 绘制方向图

xlim([-40 40]);

xlabel('角度(°)');

ylabel('幅度(dB)');

title('加窗后波束形成结果(阵元数16,d为2倍波长)');