% Sun Feng
% 2009.8.20 first edition
% SAS
% Ignore multipath effects;two targets
clc;clear all;close all;
%% Configuration
%Here just one linear horizental array and we suppose that the tansmitor is
%in the same line of the receiving array
Narray=1;
Velocity=0.5;
Nping=100;
d=0.1; % interval of receiving elements
Dd=0; %distance from the transmitor to the first of the receiving elements
c=1500;
% signal choosing
Tpulse=5e-3;
Tinterval=100e-3;
fs=50e3;
fc=12e3;
tt=0:1/fs:Tpulse-1/fs;
t=0:1/fs:10e-3-1/fs;
f1=7e3;
f2=17e3;
Sig=chirp(tt,f1,Tpulse-1/fs,f2);
S_t=zeros(size(t));
S_t(1:length(tt))=Sig;
L=length(S_t);
%set up
psize=0.03;
H=0;
R=50;
Tpass=R/c*2;%subtract from real time for simplicity
Nrange=100;
Nalong=100;
Reff=0.1*randn(Nrange,Nalong);
Reff(Nrange/2,Nalong/2)=1;
% figure(1);
% pcolor(Reff');
% axis equal;
% axis([1 Nrange 1 Nalong]);
% shading flat;
% colormap hot;
% colorbar
disp('Configuration done')
%% Data generation
% starting with a transmitor position of(-5,0)
Pstart=Nalong/2*psize-Nping*Velocity/2*Tinterval;
transmitor=zeros(Nping,2);
receiver=zeros(Nping,Narray,2);
data=zeros(Nping,Narray,length(S_t));
for ii=1:Nping
transmitor(ii,1)=Pstart+(ii-1)*Velocity*Tinterval;
receiver(ii,:,1)=transmitor(ii,1)+Dd+(-Narray/2:Narray/2-1)*d;
%for kk=1:Nrange
%for mm=1:Nalong
r1=sqrt((R+psize*(Nrange/2-1)-squeeze(transmitor(ii,2)))^2+(psize*(Nalong/2-1)-squeeze(transmitor(ii,1)))^2+H^2);
for jj=1:Narray
r=r1+sqrt((R+psize*(Nrange/2-1)-squeeze(receiver(ii,jj,2)))^2+(psize*(Nalong/2-1)-squeeze(receiver(ii,jj,1)))^2+H^2);
%Dsample(jj)=round((r/c-Tpass)*fs);
Dsample=round((r/c-Tpass)*fs);
data(ii,jj,:)=[zeros(1,Dsample) S_t(1:L-Dsample)];
end
%end
%end
end
% for ii=1:Nping
% transmitor(ii,1)=Pstart+(ii-1)*Velocity*Tinterval;
% receiver(ii,:,1)=transmitor(ii,1)+Dd+(-Narray/2:Narray/2-1)*d;
%
% %for kk=1:Nrange
% %for mm=1:Nalong
% r1=sqrt((R+psize*(Nrange/2-10)-squeeze(transmitor(ii,2)))^2+(psize*(Nalong/2-75)-squeeze(transmitor(ii,1)))^2+H^2);
% for jj=1:Narray
% r=r1+sqrt((R+psize*(Nrange/2-10)-squeeze(receiver(ii,jj,2)))^2+(psize*(Nalong/2-75)-squeeze(receiver(ii,jj,1)))^2+H^2);
% Dsample=round((r/c-Tpass)*fs);
% data(ii,jj,:)=squeeze(data(ii,jj,:))'+[zeros(1,Dsample) S_t(1:L-Dsample)];
% end
% %end
% %end
% end
disp('Data generated')
%% Demodulation
for ii=1:Nping
for jj=1:Narray
y_re=cos(2*pi*12e3*(t-Tpass))'.*squeeze(data(ii,jj,:));
y_im=sin(2*pi*12e3*(t-Tpass))'.*squeeze(data(ii,jj,:));
[b,a]=butter(32,0.4);
I=filter(b,a,y_re);
Q=filter(b,a,y_im);
data_de(ii,jj,:)=I+i*Q;
end
end
y_re=cos(2*pi*12e3*t).*S_t;
y_im=sin(2*pi*12e3*t).*S_t;
[b,a]=butter(32,0.4);
I=filter(b,a,y_re);
Q=filter(b,a,y_im);
St_de=I+i*Q;
disp('Data demodulated')
%% Range compressing
for ii=1:Nping
for jj=1:Narray
temp=xcorr(squeeze(data_de(ii,jj,:)),St_de);
MF(ii,jj,:)=temp(L:end);
end
end
figure
disp('Match Filtering finished')
MF1=squeeze(MF(:,1,:));
Imax=max(max(abs(MF1)));
MFabs=20*log10(abs(MF1)/Imax);
pcolor(c*(t+Tpass)/2,(1:Nping),20*log10(abs(MF1/Imax)));
axis xy;
shading flat
caxis([ -3 0])
colormap hot
colorbar
%% Along track compressing
Image=zeros(Nrange,Nalong);
for kk=1:Nrange
clc;
disp(kk);
for mm=1:Nalong
for ii=1:Nping
r1=sqrt((R+psize*(kk-1)-squeeze(transmitor(ii,2)))^2+(psize*(mm-1)-squeeze(transmitor(ii,1)))^2+H^2);
for jj=1:Narray
r=r1+sqrt((R+psize*(kk-1)-squeeze(receiver(ii,jj,2)))^2+(psize*(mm-1)-squeeze(receiver(ii,jj,1)))^2+H^2);
Dsample=round((r/c-Tpass)*fs);
% D_int=floor((r/c-Tpass)*fs);
% D_rem=(r/c-Tpass)-D_int/fs;
% t_resample=t+D_rem;
% MF_resampled=interp1(t,squeeze(MF(ii,jj,:)),t_resample);
Image(kk,mm)=Image(kk,mm)+squeeze(MF(ii,jj,Dsample+1))*exp(-j*2*pi*fc/c*r);
end
end
end
end
figure
Imax=max(max(abs(Image)));
IMAGE=20*log10(abs(Image)/Imax)';
pcolor(R+((0:Nrange-1))*psize,(-Nalong/2:Nalong/2-1)*psize,IMAGE);
axis xy;
shading flat
caxis([ -4 0])
colormap hot
colorbar