Figure 41. Example performance for Doppler bin 6 (100 Hz) with 80-dB Chebyshev Doppler filters.

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.
Ita = d/lambda*cos(theta);

% Normalized Doppler Frequency of the k-th clutter patch:
omegac = beta*Ita*sin(phi*pi/180 + phia*pi/180);

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 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);
for m=1:M
    U(:,m) =  1/sqrt(M)*exp(-1i*2*pi*omegadopplerbank(m)*(0:M-1));    % Doppler Filter Steering Vector
end

td = chebwin(M,80);                                                    % 80-dB Chebyshev Doppler Taper.
F = diag(td)*conj(U);                                                  % Eq. (189)

Solve M Separate N-dimensional Adaptive Problems

ksicm = zeros(Nc,M+1);
W = zeros(N,M);
for m=1:M
    fm = F(:,m);
    Rum = kron(fm,eye(N))'*Ru*kron(fm,eye(N));                         % Eq. (196)
    wm = Rum\gt;                                                       % Eq. (195)
    W(:,m) = wm;

    for k=1:Nc
        b(:,k) = exp(1i*2*pi*omegac(k)*(0:M-1)); % Temporal Steering Vector
        ksicm(k,m) = ksi(k)*abs(fm'*b(:,k))^2;                         % Eq. (200)
    end
end

The Doppler Bin #6 corresponds to the seventh column of the above matrices

msel = 7;
wmsel = W(:,msel);
fmsel = F(:,msel);
w = kron(fmsel,wmsel);                                                 % Eq. (202)

Adapted Patterns

phi1 = -90:90;   Lphi = length(phi1);
fd = -150:150;   Lfd  = length(fd);
fsp = d/lambda*cos(theta*pi/180)*sin(phi1*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));          % Target Spatial Steering Vector.
        b = exp(1i*2*pi*omega(n)*(0:M-1));       % Dummy Target 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;
[rows cols] = find(10*log10(abs(Pw1))<-100);
for i=1:length(rows)
    Pw1(rows(i),cols(i)) = 10^(-100/10);
end

Plot the Adapted Pattern

figure('NumberTitle', 'off','Name', ...
    ' Figure 41. Example performance for Doppler bin 6 (100 Hz) with 80-dB Chebyshev Doppler filters.',...
     'Position', [1 1 700 600]);
[Az Doppler] = meshgrid(phi1,fd);
colormap jet;
surf(Az, Doppler, 10*log10(abs(Pw1)));
shading interp;
xlim([-90 90])
ylim([-150 150]);
xlabel('sin(Azimuth)');
ylabel('Doppler Frequency (Hz)');
h = colorbar;
set(get(h,'YLabel'),'String','Relative Power (dB)');

Plot the Principal Cut at Doppler = 100 Hz:

figure('NumberTitle', 'off','Name', ...
       ' Figure 41. Example performance for Doppler bin 6 (100 Hz) with 80-dB Chebyshev Doppler filters.',...
       'Position', [1 1 1000 400]);
% a. Cut of the Adapted Pattern at Doppler = 100 Hz.
subplot(1,2,2);
plot( phi1, 10*log10(abs(Pw1(fd == fdt,:))),'LineWidth',1.5);
ylim([-80 40]); xlim([-90  90]);
ylabel('Magnitude (dB)');
xlabel('Azimuth Angle (deg)');
title('Cut of the Adapted Pattern at Doppler = 100 Hz');
grid on;

% Plot the CNR at bin #6.
subplot(1,2,1);
plot(phi(91:271),10*log10(abs(ksi(91:271))),'--','LineWidth',1.5)
hold on;
plot(phi(91:271),10*log10(abs(ksicm(91:271,msel))),'r','LineWidth',1.5)
ylabel('CNR (dB)');
xlabel('Azimuth Angle (deg)');
title('Clutter Power Spectral Density');
ylim([-80 40]);
xlim([-90 90]);
grid on;
legend('Single Pulse','Doppler Bin #6','Location','NorthWest');
tightfig;