%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Generate SAR echo data %%%%
%%%% float 32 ompact format %%%%
%%%% the data is written in a file named sarecho.mat %%%%
%%%% V2.0 2010-7-6 revised by Cooper can adopt manuvers path %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;clc;
cj=sqrt(-1);
c=299792458; %light speed
Tp=4e-6; %pulse width
fc=1000e6;
B=50e6; %trasmit LFM signal bandwidth
fs=200e6; %sample frequency
PRF=200; %pulse repeat frequency
Res_r=c/2/B; %resolution in range dimention
Res_a=3; %resolution in azimuth dimention
theta=2*asin(c/(4*Res_a*fc)); %accumulated angle(radian)
K=B/Tp; %调频率
lamda=c/fc; %wave length
dt=1/fs; %sample space in time
N=ceil(Tp/dt); %sample number in pulse during time
dy=c/2*dt; %sample space in range
V=50; %velocity in flight direction
h=5000;
dx=V/PRF; %sample space in azimuth
gamma=zeros(20,20);
numx=20;numy=20; %number of target
gamma(1,1)=1;%gamma(1,5)=1;gamma(1,10)=1;gamma(1,15)=1;gamma(1,20)=1;
%gamma(10,1)=1;gamma(10,5)=1;gamma(10,10)=1;gamma(10,15)=1;gamma(10,20)=1;
%gamma(20,1)=1;gamma(20,5)=1;gamma(20,10)=1;gamma(20,15)=1;gamma(20,20)=1;
detax=10; %distance between targets in azimuth
detay=20; %distance between targets in range
Range_Swath=numy*dy;
Azimuth_Swath=numx*dx;
w=numy*detay/2;
Rg0=3000; %RB
Rgmin=Rg0-w; %RB near
Rgmax=Rg0+w; %RB far
halfapeture=sqrt(Rg0.^2+h.^2)*tan(theta/2); %half length of an aperture
halfapewidth=round(halfapeture/dx); %the sample number of a half aperture
imghalfapeture=numx*detax/2; %the half region of a map
imghalfaperturewidth=round(imghalfapeture/dx); %半成像采样点数
rpchalfapeturewidth=halfapewidth+imghalfaperturewidth; %方位向半采样点数
rawdatawidth=2*rpchalfapeturewidth+1; %the sample number in azimuth dimension
Rmin=sqrt(h.^2+Rgmin^2); %R0 near
Rmax=sqrt(h.^2+Rgmax^2); %R0 far
delaymin=2*Rmin/c-Tp/2; %距离波门起始时刻
delaymax=2*Rmax/cos(theta/2)/c+Tp/2;%距离波门终止时刻
slicelen=round((delaymax-delaymin)/dt); %the sample number in range dimension
Src=sqrt(h.^2+Rg0^2);; %R0 center
Rang_Wath=0;
Azimuth_StartNum=0;
Azimuth_EndNum=0;
%%%%%%%雷达平台位置%%%%%%%%%%%%%%
X0 = 0;
Y0 = 0;
Z0 = h;
tA = 0.000; %天线相位中心指向成像区域中心的时刻
NumA=-floor(rawdatawidth/2):rawdatawidth-floor(rawdatawidth/2)-1;
ta = (NumA/PRF)+tA;
azm = zeros(rawdatawidth,3);
azm(:,1) = X0+V*ta;
azm(:,2) = Y0;%+1*sin(2*ta+0.1);
azm(:,3) =Z0;%+5*sin(0.5*ta);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Head=[fc,B,Tp,fs,V,PRF,dx,dy,Res_r,Res_a,theta,Rg0,Rang_Wath,Range_Swath,Azimuth_Swath,h,Rmin,...
Src,Rmax,Azimuth_StartNum,Azimuth_EndNum,rawdatawidth,slicelen,lamda];%需要存储的几何参数,共24个
Head(256)=0;
% SaveFile='e:\sim\echo.seo'; %回波文件保存地址
% fid=fopen(SaveFile,'w'); %打开回波文件
% fwrite(fid,Head,'float32');
[p,n,g]=find(gamma');
Hwaitbar=waitbar(0,'读入场景...');
Num=length(g);
for i=1:Num
% tar(i,1)=(p(i)-numx/2)*detax;tar(i,2)=Rg0+(n(i)-numy/2)*detay;tar(i,3)=gamma(n(i),p(i));tar(i,4)=0;
tar(i,1)=0;tar(i,2)=Rg0;tar(i,3)=gamma(n(i),p(i));tar(i,4)=0;
waitbar(i/Num);
end
close(Hwaitbar);
Hwaitbar=waitbar(0,'产生回波...');
sr=zeros(rawdatawidth,slicelen);
for i=1:rawdatawidth
%首先判断该方位向位置时,波束覆盖范围是否包含点目标,
temp=zeros(1,slicelen);%距离向初始化
for m=1:Num
%在方位向i时,雷达与目标位置之间的距离,以成像区域中间位置作为坐标原点
r=sqrt((azm(i,2)-tar(m,2))^2+azm(i,3)^2);
dazimuth=azm(i,1)-tar(m,1);
%判断点目标m是否在波束覆盖范围之内
if(abs(dazimuth)>r*tan(theta/2))
temp=temp;
else
%接收到点目标的延迟时间,以最先接收到的回波延时作为参考
delaym=2*sqrt(dazimuth.^2+r^2)/c-Tp/2-delaymin;
%接收到信号的起始和结束点长度为N
t0=fix(delaym/dt)+1;
t1=fix((delaym+Tp)/dt);
tm=[t0*dt-delaym:dt:t1*dt-delaym]-Tp/2;
%点目标雷达回波
temp(t0:t1)=temp(t0:t1)+(tar(m,3)+cj*tar(m,4))*exp(cj*pi*K*tm.^2)...
*exp(-cj*4*pi/lamda*sqrt(dazimuth^2+r^2));
end
end
sr(i,:)=temp;
% fwrite(fid,[real(temp),imag(temp)],'float32');%按时部虚部进行文件存储
Max_Echo(i)=max(abs(temp));
waitbar(i/rawdatawidth);
end
close(Hwaitbar);
% fclose(fid);
figure;imagesc(abs(sr));
sr = sr.';
save sarecho.mat Head sr azm; %保存回波和关键参数
- 1
- 2
- 3
前往页