Figure 42. SINR Loss as a function of Doppler filter sidelobe level, for Element Space post-Doppler STAP.

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 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) for each azimuth angle

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

Clutter Covariance Matrix Computations

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)
InvRu = inv(Ru);

Target Space-Time Steering Vector

phit = 0; thetat = 0;                                     % Target azimuth and elevation angles in degrees.
fdt = 100;                                                % Target Doppler Frequency in Hz.
fspt = d/lambda*cos(thetat*pi/180)*sin(phit*pi/180);
omegat = fdt/fr;
at = exp(1i*2*pi*fspt*(0:N-1)).';                         % Target Spatial Steering Vector.
ta = chebwin(N,30);                                       % 30 dB Chebychev Spatial Tapper.
gt = ta.*at;

Doppler Filter Matrix Construction

dopplerfilterbank = linspace(0,300,M+1);
omegadopplerbank = dopplerfilterbank/fr;
U = zeros(M,M);
fd = 0:.5:300;   Lfd = length(fd);
omegad = fd/fr;
SNRo = M*N;

for m=1:M
    U(:,m) =  1/sqrt(M)*exp(-1i*2*pi*omegadopplerbank(m)*(0:M-1));     % Doppler Filter Steering Vector
end

F40  = diag(chebwin(M,40))*conj(U);  % Doppler Filter Bank Matrix with 40-dB Chebyshev Doppler Taper applied.
F60  = diag(chebwin(M,60))*conj(U);  % Doppler Filter Bank Matrix with 60-dB Chebyshev Doppler Taper applied.
F80  = diag(chebwin(M,80))*conj(U);  % Doppler Filter Bank Matrix with 80-dB Chebyshev Doppler Taper applied.
F100 = diag(chebwin(M,100))*conj(U); % Doppler Filter Bank Matrix with 100-dB Chebyshev Doppler Taper applied.

LSINR Computation for Optimum Fully Adaptive Case

LSINRopt = zeros(1,Lfd);
for n=1:Lfd
    bt = exp(1i*2*pi*omegad(n)*(0:M-1)).'; % Target Doppler Steering Vector
    vt = kron(bt,at);
    w = InvRu*vt; %#ok<MINV>
    LSINRopt(n) = real(w'*vt)/SNRo;
end

LSINR Computations for 40, 60, 80 and 100 dB SLL

SINR40_mat  = zeros(M,Lfd);
SINR60_mat  = zeros(M,Lfd);
SINR80_mat  = zeros(M,Lfd);
SINR100_mat = zeros(M,Lfd);

for m=1:M % for every Doppler Bin ...

    f40m = F40(:,m);
    f60m = F60(:,m);
    f80m = F80(:,m);
    f100m = F100(:,m);

    R40um = kron(f40m,eye(N))'*Ru*kron(f40m,eye(N));
    R60um = kron(f60m,eye(N))'*Ru*kron(f60m,eye(N));
    R80um = kron(f80m,eye(N))'*Ru*kron(f80m,eye(N));
    R100um = kron(f100m,eye(N))'*Ru*kron(f100m,eye(N));

    w40m = R40um\gt;
    w60m = R60um\gt;
    w80m = R80um\gt;
    w100m = R100um\gt;

    w40 = kron(f40m,w40m);
    w60 = kron(f60m,w60m);
    w80 = kron(f80m,w80m);
    w100 = kron(f100m,w100m);

    for n=1:Lfd
        bt = exp(1i*2*pi*omegad(n)*(0:M-1)).'; % Dummy Target Doppler Steering Vector
        vt = kron(bt,at);
        SINR40_mat(m,n) = abs(w40'*vt)^2/real(w40'*Ru*w40);
        SINR60_mat(m,n) = abs(w60'*vt)^2/real(w60'*Ru*w60);
        SINR80_mat(m,n) = abs(w80'*vt)^2/real(w80'*Ru*w80);
        SINR100_mat(m,n) = abs(w100'*vt)^2/real(w100'*Ru*w100);
    end

end

SINR40   = max(abs(SINR40_mat));
SINR60   = max(abs(SINR60_mat));
SINR80   = max(abs(SINR80_mat));
SINR100  = max(abs(SINR100_mat));
LSINR40  = SINR40/SNRo;
LSINR60  = SINR60/SNRo;
LSINR80  = SINR80/SNRo;
LSINR100 = SINR100/SNRo;

Plot the SINR Losses

figure('NumberTitle', 'off','Name', ...
       'Figure 42. SINR loss as a function of Doppler filter sidelobe level',...
       'Position', [1 1 700 500]);
plot(fd,10*log10(LSINRopt),'LineWidth',1.5)
hold on;
plot(fd,10*log10(LSINR40),'r','LineWidth',1.5)
plot(fd,10*log10(LSINR60),'g','LineWidth',1.5)
plot(fd,10*log10(LSINR80),'m','LineWidth',1.5)
plot(fd,10*log10(LSINR100),'c','LineWidth',1.5)
grid on;

ylabel('SINR Loss (dB)');
xlabel('Target Doppler Frequency (Hz)');
ylim([-40 1]);
xlim([-5 305]);
legend('Optimum', '40 dB Doppler SLL', '60 dB Doppler SLL', '80 dB Doppler SLL', '100 dB Doppler SLL',...
       'Location','Best');
grid on;