Figure 23. Example Scenario: Optimum 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 Computations

thermal_noise_power;

Thermal Noise Covariance Matrix Computation

Rn = sigma2*eye(M*N);

Clutter Patch Geometry Computation

clutter_patch_rcs;

Clutter-to-Noise Ratio (CNR) Calculation

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)

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.

Optimum, Fully Adaptive STAP Solution

w = Ru\vt;                                               % Eq. (104)

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;

Cropping Extreme Values

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

Plot the Adapted Pattern

figure('NumberTitle', 'off','Name', ...
       'Figure 23a. Example Scenario: Adapted Pattern for Optimum 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 23b. 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 == fdt,:))));
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 == phit))));
ylim([-80 0.5]); xlim([-150 150]);
ylabel('Relative Power (dB)');
xlabel('Doppler Frequency (Hz)');
title('Azimuth = 0 deg');
grid on;