Figure 24.1. Multitarget Scenario: Tapered Fully adaptive STAP. (a) Adapted pattern. (b) Principal cuts at target azimuth and Doppler.

Contents

% Coded by Ilias Konsoulas, 16 Sept. 2018.
% Code provided for educational purposes only. All rights reserved.

clc; clear; close all;

Radar System Operational Parameters

radar_oper_params;

Thermal Noise Power Computation

thermal_noise_power;

Thermal Noise Covariance Matrix

Rn = sigma2*eye(M*N);

Clutter Patch Geometry Computation

clutter_patch_rcs;

Calculate the Array Transmit and Element Receive Power Gains

Tx_Rx_power_gains;

Calculate the Clutter to Noise Ratio (CNR) per element per pulse:

ksi = Pt*Gtgain.*Grec*lambda^2*sigma/((4*pi)^3*Pn*10^(Ls/10)*Rcik^4);   % Eq. (58)

Clutter Covariance Matrix Computation

beta = 1;   % beta parameter.
phia = 0;   % Velocity Misalignment Angle.

Rc = clutt_cov(ksi,beta);

Jamming Covariance Matrix Calculation

jamm_cov;

Total Interference Covariance Matrix

Ru = Rc + Rj + Rn;                                       % Eq. (98)

What If you Want to Illuminate Multiple Targets?

Demonstrate a multitarget scenarion:

% Target #1:
     phit1 = 0; thetat1 = 0;                             % Target #1 azimuth and elevation angles in degrees.
     fdt1 = 100;                                         % Target #1 Doppler Frequency.
     fspt1 = d/lambda*cos(thetat1*pi/180)*sin(phit1*pi/180);
     omegact1 = fdt1/fr;
     at1 = exp(1i*2*pi*fspt1*(0:N-1));                   % Target #1 Spatial Steering Vector.
     bt1 = exp(1i*2*pi*omegact1*(0:M-1));                % Target #1 Doppler Steering Vector
     vt1 = kron(bt1,at1).';                              % Target #1 Space-Time Steering Vector.
     ta = chebwin(N,30);                                 % 30 dB Chebychev Spatial Tapper.
     tb = chebwin(M,40);                                 % 40 dB Chebychev Doppler Taper.
     t1 = kron(tb,ta);
     gt1 = t1.*vt1;

% Target #2:
     phit2 = -30; thetat2 = 0;                           % Target #2 azimuth and elevation angles in degrees.
     fdt2 = -50;                                         % Target #2 Doppler Frequency.
     fspt2 = d/lambda*cos(thetat2*pi/180)*sin(phit2*pi/180);
     omegact2 = fdt2/fr;
     at2 = exp(1i*2*pi*fspt2*(0:N-1));                   % Target #2 Spatial Steering Vector.
     bt2 = exp(1i*2*pi*omegact2*(0:M-1));                % Target #2 Doppler Steering Vector
     vt2 = kron(bt2,at2).';                              % Target #2 Space-Time Steering Vector.
     ta = chebwin(N,30);                                 % 30 dB Chebychev Spatial Tapper.
     tb = chebwin(M,40);                                 % 40 dB Chebychev Doppler Taper.
     t2 = kron(tb,ta);
     gt2 = t2.*vt2;

% Target #3:
     phit3 = 60; thetat3 = 0;                            % Target #3 azimuth and elevation angles in degrees.
     fdt3 = -100;                                        % Target #3 Doppler Frequency.
     fspt3 = d/lambda*cos(thetat3*pi/180)*sin(phit3*pi/180);
     omegact3 = fdt3/fr;
     at3 = exp(1i*2*pi*fspt3*(0:N-1));                   % Target #3 Spatial Steering Vector.
     bt3 = exp(1i*2*pi*omegact3*(0:M-1));                % Target #3 Doppler Steering Vector
     vt3 = kron(bt3,at3).';                              % Target #3 Space-Time Steering Vector.
     ta = chebwin(N,30);                                 % 30 dB Chebychev Spatial Tapper.
     tb = chebwin(M,40);                                 % 40 dB Chebychev Doppler Taper.
     t3 = kron(tb,ta);
     gt3 = t3.*vt3;

     gt = gt1 + gt2 + gt3;                               % Target Composite Space-Time Steering Vector.

Tapered Fully Adaptive STAP Solution

w = Ru\gt;

Adapted Patterns

phi = -90:.5:90; Lphi = length(phi);
fd = -150:.5:150;   Lfd = length(fd);
fsp = d/lambda*cos(theta)*sin(phi*pi/180);
omega = fd/fr;
Pw1 = zeros(Lfd,Lphi);
for m=1:Lphi
    for n=1:Lfd
        a = exp(1i*2*pi*fsp(m)*(0:N-1));                % Dummy Spatial Steering Vector.
        b = exp(1i*2*pi*omega(n)*(0:M-1));              % Dummy Doppler Steering Vector
        v = kron(b,a).';
        Pw1(n,m) = abs(w'*v)^2;
    end
end

Normalization

max_value = max(max(Pw1));
Pw = Pw1/max_value;

% Scaling:
[rows cols] = find(10*log10(abs(Pw))<-80);
for i=1:length(rows)
    Pw(rows(i),cols(i)) = 10^(-80/10);
end

Plot the Adapted Pattern

figure('NumberTitle', 'off','Name', ...
       'Figure 24.1.a. Multitarget Adapted Pattern for Tapered Fully Adaptive STAP', ...
       'Position',[1 1 700 600]);
[Az Doppler] = meshgrid(sin(phi*pi/180),fd);
colormap jet;
pcolor(Az, Doppler, 10*log10(abs(Pw)));
shading interp;
xlim([-1 1])
ylim([-150 150]);
xlabel('sin(Azimuth)');
ylabel('Doppler Frequency (Hz)');
h = colorbar;
% h = colorbar('YTickLabel',{-80:10:0});
set(get(h,'YLabel'),'String','Relative Power (dB)');

Plot the Principal Cuts

figure('NumberTitle', 'off','Name', ...
       'Figure 24.1.b. Principal Cuts at Target Azimuth and Doppler',...
       'Position',[1 1 700 600]);
% a. Cut of the Adapted Pattern at Doppler = 100 Hz.
subplot(2,1,1);
plot(sin(phi*pi/180), 10*log10(abs(Pw(fd == 100,:))));
ylim([-80 0.5]); xlim([-1  1]);
ylabel('Relatuve Power (dB)');
xlabel('sin(Azimuth)');
title('Doppler Frequency = 100 Hz');
grid on;

% b. Cut of the Adapted Pattern at Azimuth Angle = 0 deg.
subplot(2,1,2);
plot(fd, 10*log10(abs(Pw(:,phi == 0))));
ylim([-80 0.5]); xlim([-150 150]);
ylabel('Relative Power (dB)');
xlabel('Doppler Frequency (Hz)');
title('Azimuth = 0 deg');
grid on;