一、简介
二、源代码
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
三、运行结果