% -------------------------------------------------------------------------%
% Frequency domain ISAR Processing %
% -------------------------------------------------------------------------%
%
% Author : JMM Verzeilberg
% Date : 16 -03 -2011
% Matlab version : 2010 B
%
% Implementation to calculate the ISAR response of a single scatterer via
% the frequency domain approach . The maximum distance of the target is
% related to the length of the transmitted signal , defined in de second
% part of the program .
clear all; clc
c = 3e8; % Speed of light [m/s]
TX = [0 0]; % TX position [m]
RX = [0 0]; % RX position [m]
PRF = 1250; % Pulse repetition frequency [Hz]
Int = 1; % Integration time [s]
FC = 2e9; % Center frequency [Hz]
B = 4e6; % Bandwidth [Hz]
Tstep = 1/(12* B); % Sampling time [s]
t =-2.5e-6: Tstep :2.5e-6; % Pulse length [s]
alpha = (pi*B) /(2* t(end)); % parameter for chirp [-]
V = [60 0]; % Target speed [m/s]
Target = [0 1990]; % Target position [m] @t =0
Rdelta = Tstep *(c /2); % Size of a cell in the range response
% -------------------------------------------------------------------------%
% Allocating memory for matrices and vectors %
% and defining some parameters %
% -------------------------------------------------------------------------%
s0 =[ exp (1i*( alpha *t.^2 - pi)) ...
zeros(1,5* length (t))]; % Transmitted signal
Range = zeros (1, PRF*Int); % Vector for Range info
dRc= zeros (PRF *Int , length (s0)); % Matrix for received signals
% -------------------------------------------------------------------------%
% Frequency Domain Calculations %
% -------------------------------------------------------------------------%
for p =1:( PRF *Int )
Targetp = [ Target (1) +V(1) /PRF *(p -1) ...
Target (2)+V (2)/ PRF *(p -1) ]; % Target position @ pulse p
Range (p) = norm ( Targetp -TX)+ norm ( Targetp -RX);% Range
dt = Range (p)/c; % Fly around time
sR1 = [exp ( -2*1i*pi*FC*dt +1i*( alpha *(t).^2 - pi))...
zeros(1,5* length (t))]; % Received signal
sR1 = circshift (sR1 ,[0 ...
floor ( Range (p) /(1500/ length (t)))]);% Shifted received signal
dRc(p ,:) = ifft (fft (sR1 ).* conj (fft (s0)));
end
cDop = exp (-1i *2* pi* Range /(c/FC)).'* ones (1, length (s0));% Azimuth filter
Xf = ( ifft ( fft( dRc).* conj ( fft( cDop )))); % Azimuth compression
% -------------------------------------------------------------------------%
% Plotting the end result %
% -------------------------------------------------------------------------%
yas = linspace (-V(1) /(2* Int ),V(1) /(2* Int ),PRF *Int );
xas = Rdelta *(0:( length (s0) -1));
figure
imagesc (xas ,yas , fftshift (20* log10 (abs (Xf)) ,1) -max( max (20* log10 ( abs(Xf)))));
caxis ([ -30 0])
ylabel ('cross - range [m]')
xlabel ('down - range [m]')
% -------------------------------------------------------------------------%
% Time Domain ISAR Processing %
% -------------------------------------------------------------------------%
%
% Author : JMM Verzeilberg
% Date : 27 -04 -2011
% Matlab version : 2010 B SP1
%
% Generating responses of the ISAR image on a predefined grid centered
% around the first scatterer in the input file . The position of the
% transmitters and receivers is read from a database used in a TNO
% project .
clear all; clc
load SPREWS_BASES . mat
a = 0;
c = 3e8; % Speed of light [m/s]
TX = Base_TX (1:1 ,:) ; % TX position [m]
RX = Base_RX (1:1 ,:) ; % RX position [m]
PRF = 2000; % Pulse repetition frequency [Hz]
Int = 1; % Integration time [s]
FC = 3e9; % Center frequency [Hz]
B = 10e6; % Bandwidth [Hz]
Upsamp = 2; % Oversampling factor
Tstep = 1/(2* B* Upsamp ); % Sampling time [s]
t = -2.5e-6: Tstep :2.5e-6; % Pulse length [s]
alpha = B /(2* t(end)); % parameter for chirp [-]
V = [100 0]; % Target speed [m/s]
scatterer .x = [ -10 10 -10 10]; % Target x- position [m] @t =0
scatterer .y = [10 10 -10 -10]+8000; % Target y- position [m] @t =0
Rdelta = Tstep *(c); % Cell size in the range response
RF = 11; % Range factor : determines max. range
GridRes = 0.25; % Grid resolution [m]
Gridsx = 100; % Grid size in x- direction [m]
Gridsy = 150; % Grid size in y- direction [m]
% -------------------------------------------------------------------------%
% Allocating memory for matrices and vectors %
% and defining some parameters %
% -------------------------------------------------------------------------%
s0 = conj ( fft ([ exp (-1i*pi *( alpha *t .^2) ) zeros(1,RF* length (t))]));
Dbins = PRF*Int;
Rbins = length (s0);
RC = zeros (1, Rbins );
Time = ((1:( RF +1)* length (t)) -1) * Tstep-2.5e-06;
TimeSub = [( Time (1) -Tstep ) Time ];
AmpPulse=[0 ones(1,length (t)) zeros(1,length (t)*RF)];
RCGrid = zeros ( Gridsy * GridRes +1, Gridsy * GridRes +1 ,( size (TX ,1)* size (RX ,1)));
xas = Rdelta *(0:( length (s0) -1));
display ([ 'Maximum (two -way ) target range = ' num2str (( Rs +1) *1.5) ' km '])
% -------------------------------------------------------------------------%
% Time Domain Calculations %
% -------------------------------------------------------------------------%
for r=1: size (TX ,1)
TXc =TX(r ,:) ;
for s=1: size (RX ,1)
RXc=RX(s ,:);
for p=1: Dbins
for q=1: length ( scatterer .x);
scattererp = [ scatterer .x(q)+V(1)/PRF *(p -1) ...
scatterer .y(q)+V(2)/PRF *(p -1) ]; % scatterer position
if q ==1
[ gridX gridY ] = meshgrid (( scattererp (1) -50) :0.25:( scattererp (1) +50) ,...
( scattererp (2) -75) :0.25:( scattererp (2) +75) );
end
Range = norm ( scattererp -TXc)+ norm ( scattererp -RXc); % Range
tao = Range /c; % Fly around Time
sR1 = exp ( -2*1i*pi *( FC *(- tao ) +0.5* alpha *( Time -tao ) .^2) );
AmpR = interp1 ( TimeSub , AmpPulse ,Time -tao ,'linear ' ,0);
RC = RC+ ifft ( fft (( sR1 .* AmpR )).* s0);
end
RangeOnGrid = sqrt (( TXc (1) -gridX ) .^2+( TXc (2) -gridY ) .^2) +...
sqrt (( RXc (1) -gridX ) .^2+( RXc (2) -gridY ) .^2) ;
phase = exp ( -2* pi *1i* RangeOnGrid /(c/FC));
RCGrid (:,:,a)= RCGrid (:,:,a)+( interp1 (xas ,RC , RangeOnGrid ).* phase );
RC = zeros (1, Rbins );
end
end
end
% -------------------------------------------------------------------------%
% Plotting the end result %
% -------------------------------------------------------------------------%
as1 =-( Gridsx /2) :0.25:( Gridsx /2) ; % Defining the x- axis
as2 =-( Gridsy /2) :0.25:( Gridsy /2) ; % Defining the y- axis
figure , imagesc (as1 ,as2 ,20* log10 (abs ( RCGrid (: ,: ,1)))...
-max( max (20* log10 ( abs( RCGrid (: ,: ,1))))))
set(gca ,'YDir ','normal ')
% -------------------------------------------------------------------------%
% ISAR interpolation routine %
% -------------------------------------------------------------------------%
%
% Author : Ph. van Dorp , JMM Verzeilberg
% Date : 20 -07 -2011
% Matlab version : 2010 B
%
% Routine to interpolate the data between two separate ISAR images . The
% interpolation takes place in the frequency domain , where the operation
% takes place faster than in the time domain . The starting points of the
% interpolation are found by the input of the transmit frequency ,
% transmission bandwidth and the observation angle .
load ('c:\ users \ philip \ matlab \ multi_static_isar \ presentation . mat ');
% -------------------------------------------------------------------------%
% Plotting information to get a clearer view %
% -------------------------------------------------------------------------%
ZLevel = [70 100]; % Color axis scaling parameters
figure ; % Plotting the first ISAR image
subplot (1 ,2 ,1)
imagesc (20* log10 (abs ( RC_Radar1 )));
colorbar ; caxis ( ZLevel );
subplot (1 ,2 ,2)
imagesc ( angle ( RC_Radar1 ));
colorbar ; caxis ( ZLevel );
figure ; % Plotting the second ISAR image
subplot (1 ,2 ,1)
imagesc (20* log10 (abs ( RC_Radar2 )));
colorbar ; caxis ( ZLevel );
subplot (1 ,2 ,2)
imagesc ( angle ( RC_Radar2 ));
colorbar ; caxis ( ZLevel );
figure ; % Plotting t