%============ SAR 三点回波模拟 正侧视RD算法 ======================
clc;
close all;
clear all;
c=3e8;
f0=10e9;
lamd=c/f0;
Tp=1e-6;
B=100e6;
PRF=3600;
fs=120e6;
K=B/Tp;
v=150;
x1=0;y1=0;
x2=30;y2=0;
x3=0;y3=30;
Na=8192;
bet=18/180*pi;
R0=1000;
Nr=256;
Tr=Nr/fs;
Ta=Na/PRF;
tr=2*R0/c+linspace(-Tr/2,Tr/2,Nr);
ta=linspace(-Ta/2,Ta/2,Na);
xr=v*ta;
yr=R0;
fr=fftshift(linspace(-fs/2,fs/2,Nr));
fa=linspace(-PRF/2,PRF/2,Na);
r=tr*c/2;
r_c=sqrt(xr.^2+yr^2);
%====================================产生回波===============================
rec_signal=zeros(Nr,Na);
for i=1:Na
puls_signal=zeros(1,Nr);
r1=sqrt((y1+yr).^2+(xr(i)-x1).^2);
cita1=atan(abs(x1-xr(i))/(yr+y1));
if (abs(cita1)<bet/2)
puls_signal=exp(j*(pi*K*(tr-2*r1/c).^2-2*pi*f0*2*r1/c)).*(abs(tr-2*r1/c)<Tp/2);
end
r2=sqrt((y2+yr).^2+(xr(i)-x2).^2);
cita2=atan(abs(x2-xr(i))/(yr+y2));
if (abs(cita2)<bet/2)
puls_signal=puls_signal+exp(j*(pi*K*(tr-2*r2/c).^2-2*pi*f0*2*r2/c)).*(abs(tr-2*r2/c)<Tp/2);%目标2回波
end
r3=sqrt((y3+yr).^2+(xr(i)-x3).^2);
cita3=atan(abs(x3-xr(i))/(yr+y3));
if (abs(cita3)<bet/2)
puls_signal=puls_signal+exp(j*(pi*K*(tr-2*r3/c).^2-2*pi*f0*2*r3/c)).*(abs(tr-2*r3/c)<Tp/2);%目标3回波
end
rec_signal(:,i)=puls_signal.';
end
figure(1);
imagesc(abs(rec_signal));
%================================距离向脉压=================================
tran_signal=exp(-j*pi*fr.^2/K).*(abs(fr)<B/2);
for i=1:Na
rec_signal(:,i)=ifft(fft(rec_signal(:,i)).*tran_signal');
end
figure(2);
imagesc(abs(rec_signal));
%==============================插值法消除距离徙动===========================
rec_signal=fftshift(fft(rec_signal,[],2),2); %方位向变为频域
figure(3);
imagesc(abs(rec_signal));
for i=1:Na
delt_r=lamd.^2*R0*fa(i).^2/8/v.^2;
rec_signal(:,i)=interp1(r,rec_signal(:,i),r+delt_r); %插值
end
figure(4);
imagesc(abs(rec_signal));
%================================方位向进行脉压===========================
%{
for ii=1:Nr
Ka=2*v.^2/lamd/r(ii);
puls_a=exp(-j*pi*fa.^2/Ka).*(abs(fa)<Ka*Ta/2);
rec_signal(ii,:)=ifft(rec_signal(ii,:).*puls_a);
end
%}
%以下为降低方位向旁瓣 18°可按照大斜视角做
for ii=1:Nr
Ka=sqrt(1-(lamd.^2.*fa.^2)/(4*(v^2)));
puls_a=exp(j*2*pi.*tr(ii)*f0.*Ka);
rec_signal(ii,:)=ifft(rec_signal(ii,:).*puls_a);
end
figure(5);
imagesc(abs(rec_signal));