一、简介
二、源代码
clear all;clc; close all;
% 前视线阵
%% 参数
C=3e8;
fc=10e9;
lambda=C/fc;
v=100;
Tp=1.5e-6;
N=60; %阵元个数
B=100e6;
Fs=120e6;
gama=B/Tp;
Da=0.2;
H=600;
PRF=1000; %阵元切换速度
phi=45/180*pi; %俯视角
theta=24/180*pi; %波束宽度
d=0.3;% 阵元间距
va=d*PRF; %方位速度
nrn=200;
nan=N;
Rs=H*sqrt(2);
%% point targets
% point=[600 0 0; 650 0 0; 600 50 0 ; 600 -50 0; 550 0 0 ];
point=[600 0 0];
point_num=size(point,1);
%%
La=N*(Da+d);
ta=[-N/2:N/2-1]/PRF;
Tstart=2*Rs/C-nrn/2/Fs; %起始时刻
Tend=2*Rs/C+(nrn/2-1)/Fs; %终止时刻
tr=[Tstart:1/Fs:Tend].'; %快时间
%%
x_pos=ta.*v;
y_pos=ta.*va;
z_pos=H;
R0=sqrt(z_pos^2+(600-v.*ta).^2);
Rr=sqrt(R0.^2+(va.*ta).^2);
%% echo
x=zeros(nrn,nan,'single');
for m=1:N
temp1=zeros(nrn,1);
for num=1:point_num
x_temp=abs(x_pos(m)-point(num,1));
y_temp=y_pos(m)-point(num,2);
z_temp=z_pos-point(num,3);
Rt=sqrt(x_temp^2+y_temp^2+z_temp^2);
alpha=atan(y_temp./sqrt(x_temp.^2+z_temp.^2));
if (alpha>=-theta/2 && alpha<=theta/2)
Rt=sqrt(x_temp^2+y_temp^2+z_temp^2);
Wr=abs(tr-2*Rt/C)<=Tp/2;
temp2=Wr.*exp(j*pi*gama*(tr-2*Rt/C).^2).*exp(-j*4*pi*Rt/lambda);
temp1=temp1+temp2;
end
end
x(:,m)=temp1;
end
figure;imagesc(abs(x));
ka=(-2/lambda).*(va^2./R0); %方位调频率
fr=[-nrn/2:nrn/2-1]'/nrn*Fs;
del_ran=Rr-Rs;
%% range compress
fr=[-nrn/2:nrn/2-1]'/nrn*Fs;
% length=(fr/abs(gama)/Tp);
Hp=exp(j*pi*(2*v/lambda+(fr.^2)/gama));
%%
x=fftshift(fft(fftshift(x)));
for m=1:N
temp2=exp(j*4*pi*del_ran(m)/C*fr);
temp1=x(:,m).*Hp.*temp2;
x(:,m)=fftshift(fft(fftshift(temp1)));
end
figure;imagesc(abs(x));
%%
for n=1:nrn
xa(n,:)=fftshift(fft(fftshift(x(n,:))));
end
delta_R=((va.*ta).^2)./(2*R0);
Curve=delta_R*2*Fs/C;
delta_RMC=Curve-floor(Curve);%小数部分
% sinc
P=4;
temp=zeros(nrn,nan);
for n=1:nan
for m=P:nrn
for i=-P/2:P/2
if m+Curve(n)+i>nrn
temp(m,n)=temp(m,n)+xa(nrn,n)*sinc((-i+Curve(n)));
else
temp(m,n)=temp(m,n)+xa(m+floor(Curve(n))+i,n)*sinc((-i+delta_RMC(n)));
end
end
end
end
三、运行结果