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 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 with an array SNR of 20 dB. The jammer transmits a high-power, uncorrelated waveform (white noise). The angle of the jammer is 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; max(10*log10(abs(y1).^2)) max(10*log10(abs(y2).^2)) 
ans = 26.8202 ans = 19.5386 

## Plot The Results.

figure('NumberTitle', 'off','Name','Figure 11.15'); subplot(2,1,1); 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; subplot(2,1,2); 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; end % 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]); subplot(1,2,1); polardb(angle*pi/180,10*log10(abs(C1).^2),-60,'b'); title('Untapered'); grid on; subplot(1,2,2); polardb(angle*pi/180,10*log10(abs(C2).^2),-60,'r'); title('Tapered with 50dB Chebychev Window'); grid on; tightfig;