MATLAB Examples

Figure 29. Expected SINR Loss for SMI with matched steering vector.

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 clutter patch:

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, Vc] = clutt_cov(ksi,beta);

Jamming Covariance Matrix Calculation

jamm_cov;

Analytic Interference Covariance Matrix Calculation

Ru = Rc + Rj + Rn;

SINR Loss Calculations

fd = -150:.5:150;   Lfd = length(fd);
phit = 0; thetat = 0;                                     % Target Azimuth and Elevation Angles.
fspt = d/lambda*cos(thetat*pi/180)*sin(phit*pi/180);      % Target Spatial Frequency.
omegat = fd/fr;
at = exp(1i*2*pi*fspt*(0:N-1));                           % Target Spatial Steering Vector.
LSINRopt = zeros(1,Lfd);
InvRu = inv(Ru);
SNRo = M*N;                                               % Eq. (119)
Ndof = M*N;                                               % Number of adjustable weights (Degrees of Freedom)
Samples = [Ndof 2*Ndof 3*Ndof 4*Ndof 5*Ndof];             % Number of Samples(n3) used for SMI.
% Samples = 50*Ndof;             % Number of Samples(n3) used for SMI.
SINRopt = zeros(1,Lfd);

% Calculate LSINRopt:
for n1=1:Lfd
    bt = exp(1i*2*pi*omegat(n1)*(0:M-1));                 % Dummy Target Doppler Steering Vector
    vt = kron(bt,at).';
    wopt = InvRu*vt; %#ok<*MINV>
    SINRopt(n1) = real(wopt'*vt);                         % Eq. (112)
    LSINRopt(n1) = SINRopt(n1)/SNRo;                      % Eq. (120)
end

Calculate by Monte Carlo Experiments and Plot the Expected SINR Loss

figure('NumberTitle', 'off','Name', 'Figure 29. SINR Loss for SMI with matched steering vector',...
       'Position', [1 1 900 700]);
plot(fd,10*log10(abs(LSINRopt)),'LineWidth',1.5)
hold on;

% First Calculate LSINRest expected value using Monte Carlo method:
NRuns = 10;                         % Number of Monte Carlo runs.
rho = zeros(NRuns,Lfd);
SINRa = zeros(NRuns,Lfd);
time_loop = zeros(1,NRuns);
% Set the seed of the RNG.
LSINRest = zeros(Lfd,length(Samples));
colors = [0 1 0; 1 0 0 ; 1 1 0; 0 1 1; 1 0 1;];
rng(131);
warning('off', 'all');

for n3=1:length(Samples)

    for n2=1:NRuns
        n2; %#ok<*NOPTS>
        X   = zeros(M*N,Samples(n3));
        Rest = zeros(M*N,M*N);
        for n4=1:Samples(n3)

            % Create Thermal Noise Measurement space-time vector:
            chi_n = sqrt(sigma2/2)*(randn(M*N,1) + 1i*randn(M*N,1));

            % Create #1 Jammer Interference Measurement temporal vector:
            alphaj1 = sqrt(sigma2*ksi_j(1,1)/2)*(randn(M,1) + 1i*randn(M,1));
            % Create #2 Jammer Interference Measurement temporal vector:
            alphaj2 = sqrt(sigma2*ksi_j(1,2)/2)*(randn(M,1) + 1i*randn(M,1));
            % Create #1 Jammer Interference Measurement space-time vector:
            chi_j1 = kron(alphaj1, Aj(:,1));
            % Create #2 Jammer Interference Measurement space-time vector:
            chi_j2 = kron(alphaj2, Aj(:,2));

            % Create Total Jamming Interference Measurement space-time vector:
            chi_j = chi_j1 + chi_j2;

            % Create Total Clutter Interference Measurement space-time vector:
            R = rand(1,Nc);  I = randn(1,Nc);
            Ksi1 = repmat(sqrt(sigma2*ksi/2).*(R + 1i*I),[M*N 1]);
            chi_ik = sum(Ksi1.*Vc,2);
            % Add the interference component vectors to get the total
            % (target free) measured interference space-time snapshot:
            X(:,n4) = chi_ik + chi_j + chi_n;

        end

        % Interference Sample Covariance Matrix Computation:
        meanX = 1/Samples(n3)*sum(X,2);
        Ruest = 1/Samples(n3)*(X*X') - (meanX*meanX');                         % Eq. (129)
        InvRuest = inv(Ruest);

        for n1=1:Lfd
            bt = exp(1i*2*pi*omegat(n1)*(0:M-1)); % Dummy Target Doppler Steering Vector
            vt = kron(bt,at).';
            w = InvRu*vt;
            west = InvRuest*vt;                                                % Eq. (130)
            rho(n2,n1) = abs(west'*vt)^2/real(west'*Ru*west)/real(w'*vt);      % Eq. (132)
        end
    end

    % Average the Estimated SINR Loss Factor ρ (rho) and apply it to the Optimal SINR Loss
    % LSINTopt to calculate the estimated SMI SINR Loss:
    LSINRest(:,n3) = 1/NRuns*sum(rho).*LSINRopt;                               % Eq. (136)

    plot(fd,10*log10(abs(LSINRest(:,n3))),'LineWidth',1.5,'Color', colors(n3,:))

end

ylabel('Expected SINR Loss (dB)');
xlabel('Target Doppler Frequency (Hz)');
% ylim([-30 1]);
legend('Known Covariance Matrix', 'SMI using Ke = N_{dof} samples', ...
       'SMI using Ke = 2N_{dof} samples', 'SMI using Ke = 3N_{dof} samples', ...
       'SMI using Ke = 4N_{dof} samples','SMI using Ke = 5N_{dof} samples', ...
       'Location','East');
ylim([-40,5]);
grid on;