MATLAB Examples

Example 11.2.2. - Use of Tapering with the Spatial Matched Filter.

We illustrate the use of tapers with the spatial matched filter for the extraction of a radar signal in the presence of a jamming interference source using a ULA with M = 20 elements with $\lambda/2$ spacing. The desired radar signal is known as a target and is present for only one sample in time. Here the target signal is at time sample (range gate) n = 100 and is at $\phi_s = 0^{\circ}$ with an array SNR of 20 dB. The jammer transmits a high-power, uncorrelated waveform (white noise). The angle of the jammer is $\phi_i = 20^{\circ}$ and its strength is 40 dB. The additive, sensor thermal noise has unit power (0 dB).

Copyright 2016 - 2026, Ilias S. Konsoulas.


Workspace Initialization.

clc; clear; close all;

Signal Definitions.

M      = 20;       % Number of Array Elements.
N      = 200;      % Number of Signal Samples.
n      = 1:N;      % Sample Index Vector.
lambda = 1;        % Incoming Signal Wavelength in (m).
d      = lambda/2; % Interelement Distance in (m).
SNR    = 20;       % target volatege signal array SNR in dBs.
INR    = 40;       % interference array SNR in dBs.
phi_s  = 0;        % target azimuth angle in degrees.
phi_i  = 20;       % interference azimuth angle in degrees.

u_s  = (d/lambda)*sin(phi_s*pi/180); % Target Normalized Spatial Frequency.
u_si = (d/lambda)*sin(phi_i*pi/180); % Jammer Normalized Spatial Frequency.

s = zeros(M,N);
s(:,100) = 10^(SNR/20)*exp(-1i*2*pi*u_s*(0:M-1).')/sqrt(M);

% Uncorrelated unit power thermal noise samples drawn from a complex Gaussian distribution
w = (randn(M,N)+1i*randn(M,N))/sqrt(2);

% The interference (jammer) vector is generated by:
% v_i = exp(-1i*pi*[0:M-1]'*sin(phi_i*pi/180))/sqrt(M); mentioned in the book is wrong.
v_i = exp(-1i*2*pi*u_si*(0:M-1).')/sqrt(M);
i_x = 10^(INR/20)*v_i*(randn(1,N)+1i*randn(1,N))/sqrt(2);

%The three signals are added to produce the overall array signal
x = s + i_x + w;

% Two beamformers (steered to phi = 0.) are applied to the resulting array returns: a spatial matched
% filter and a tapered beamformer with a -50-dB sidelobe level. The resulting beamformer output
% signals are shown in Figure 11.15. The spatial matched filter is unable to reduce the jammer
% sufficiently to observe the target signal at n = 100. However, the tapered beamformer is able
% to attenuate the jammer signal below the thermal noise level and the target is easily extracted.
% The target signal is approximately 18.5 dB with the -1.5 dB loss due to the tapering loss in (11.2.24).

Spatial Matched Filter or Steering Vector Beamformer.

c_mf = exp(-1i*2*pi*u_s*(0:M-1).')/sqrt(M);

% Spatial Dolph-Chebychev Window of length M = 20 with -50 dB sidelobe attenuation:
w = chebwin(M,50);

% Compute the Combined Taper by taking the Hadamard product:
c_mft = c_mf.*w;

% Normalize the combined taper vector:
Norm_Const = 1/sqrt(c_mft'*c_mft);
c_mft = Norm_Const*c_mft;

y1 = c_mf'*x;
y2 = c_mft'*x;

ans =


ans =


Plot The Results.

figure('NumberTitle', 'off','Name','Figure 11.15');
plot(n,10*log10(abs(y1).^2),'b.-', 'LineWidth',1.5);
title('Instantaneous Signal Power at the Untapered Spatial Matched Filter Output');
xlabel('Sample Number');
ylabel('Power (dB)');
ylim([-10 30]);
grid on;

plot(n,10*log10(abs(y2).^2),'r.-', 'LineWidth',1.5);
title('Instantaneous Signal Power at the Tapered Beamformer Output');
xlabel('Sample Number');
ylabel('Power (dB)');
ylim([-10 30]);
grid on;

Plot the corresponding Beampatterns.

N_fft = 512;
angle = -90:180/N_fft:90-180/N_fft;  % Create 512 angle samples between -90 to 90 deg.
C1 = zeros(1,N_fft);
C2 = zeros(1,N_fft);

% This calculates the beampatterns the conventional way.
for k=1:N_fft
     v = exp(-1i*pi*(0:M-1)'*sin(angle(k)*pi/180))/sqrt(M); % Azimuth Scanning Steering Vector.
     C1(k) = c_mf'*v;
     C2(k) = c_mft'*v;

% figure('Position',[250 200 700 500]);
figure('NumberTitle', 'off','Name','Figure 11.13');
plot(angle,10*log10(abs(C1).^2),angle,10*log10(abs(C2).^2),'r--', 'LineWidth',1.5)
xlim([-95 95]);
ylim([-100 5]);
title(['          Spatial Matched Filter Beamformer with d = \lambda/2 and M = 20.                ';
       'Beampatterns without taper (blue), and after a -50dB Dolph-Chebychev Window Applied (red).';]);
xlabel('Angle (deg)');
ylabel('Power (dB)');
grid on;

Plot in Polar Coordinates

figure('NumberTitle','off','Name','Figure 11.12b-Polar','Position', [100 100 1000 600]);

grid on;

title('Tapered with 50dB Chebychev Window');
grid on;