Figure 24. Example 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;

Thermal Noise Power Computation

thermal_noise_power;

Thermal Noise Covariance Matrix

Rn = sigma2*eye(M*N);

Clutter Patch RCS 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);

jamm_cov;

Total Interference Covariance Matrix

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

Target Space-Time Steering Vector

phit = 0; thetat = 0;                                    % Target azimuth and elevation angles in degrees.
fdt = 100;                                               % Target Doppler Frequency.
omegact = fdt/fr;                                        % Normalized Target Frequency.
fspt = d/lambda*cos(thetat*pi/180)*sin(phit*pi/180);     % Target Spatial Frequency.
at = exp(1i*2*pi*fspt*(0:N-1));                          % Target Spatial Steering Vector.
bt = exp(1i*2*pi*omegact*(0:M-1));                       % Target Doppler Steering Vector
vt = kron(bt,at).';                                      % Target Space-Time Steering Vector.
ta = chebwin(N,30);                                      % 30 dB Chebychev Spatial Tapper.
tb = chebwin(M,40);                                      % 40 dB Chebychev Doppler Taper.
t = kron(tb,ta);
gt = t.*vt;

Tapered Fully Adaptive STAP Solution:

w = Ru\gt;

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 24a. Example Scenario: 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)));
xlim([-1 1])
ylim([-150 150]);
xlabel('sin(Azimuth)');
ylabel('Doppler Frequency (Hz)');
h = colorbar;
set(get(h,'YLabel'),'String','Relative Power (dB)');

Plot the Principal Cuts

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

subplot(2,1,2);
plot(fd, 10*log10(abs(Pw(:,phi == phit))));
ylim([-80 0.5]); xlim([-150 150]);
ylabel('Relatuve Power (dB)');
xlabel('Doppler Frequency (Hz)');
title('Azimuth = 0 deg');
grid on;