MATLAB Examples

Example 11.3.2.

We revisit the problem from Example 11.2.2 with a jiammer at $\phi_i = 20^{\circ}$ except the jammer power is now 70 dB. Clearly, the -50dB tapered beamformer is no longer capable of sufficiently suppressing this jammer. Rather, we compute the optimum beamformer using (11.3.15), where ${\bf R}_{i+n} = 10^{70/10}{\bf v}(\phi_i){\bf v}(\phi_i)^H + {\bf I}$. First, we examine the beampattern of the optimum beamformer steered to $\phi = 0^{\circ}$. in Figure 11.17(a). Notice the null on the jammer at $\phi = 20^{\circ}$ with a depth of greater than -150 dB. We also plot the SINR loss in Figure 11.17(b) as we scan the look direction from -90 to 90 deg.

Contents

Workspace Initialization.

clc; clear; close all;

Signal Definitions.

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

u_s  = (d/lambda)*sin(phi_s*pi/180);  % Normalised Spatial Frequency Vector for Target.
u_i1 = (d/lambda)*sin(phi_i*pi/180);  % Normalised Spatial Frequency Vector for Interference.

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

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

% The interference (1iammer) vector are generated by:
v_i = exp(-1i*2*pi*u_i1*(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;
iplusn = i_x + w;

% Calculation of the Interference + Noise autocorrelation matrix.
R_ipn = 10^(INR/10)*(v_i*v_i') + eye(M);
InvR = inv(R_ipn);

% Optimum Beamformer computed for a phi_s = 0 deg using (11.3.15).
c_opt = InvR*v_s/(v_s'*InvR*v_s);  %#ok<MINV>

% Spatial Matched Filter or Steering Vector Beamformer Eq. (11.2.16).
c_mf = v_s;

% Array Output Signal Calculation:
y1 = c_mf'*x;
y2 = c_opt'*x;

Plot the Results.

figure('NumberTitle', 'off','Name','Figure 11.17 (c) and (d)')
subplot(2,1,1);
plot(n,10*log10(abs(y1).^2));
title('Instantaneous Signal Power at the Untapered Spatial Matched Filter Output');
xlabel('Range Cell');
ylabel('Power (dB)');
grid on;

subplot(2,1,2);
plot(n,10*log10(abs(y2).^2));
ylim([0 30]);
title('Instantaneous Signal Power at the MVDR Optimum Beamformer Output');
xlabel('Range Cell');
ylabel('Power (dB)');
grid on;

 max(10*log10(abs(y2).^2))

Nsamples = 3e4;
angle = -35:70/Nsamples:35-70/Nsamples;
Opt_Beam_Pat  = zeros(Nsamples,1);
Conv_Beam_Pat = zeros(Nsamples,1);

for k=1:Nsamples
      u = (d/lambda)*sin(angle(k)*pi/180);
      v = exp(-1i*2*pi*u*(0:M-1)')/sqrt(M);
     Opt_Beam_Pat(k)  = c_opt'*v;
     Conv_Beam_Pat(k) = c_mf'*v;
end
ans =
   19.1450

Plot the corresponding Beampatterns.

figure('NumberTitle', 'off','Name','Figure 11.17 (a)');
plot(angle,10*log10(abs(Conv_Beam_Pat).^2),angle,10*log10(abs(Opt_Beam_Pat).^2),'r--', 'LineWidth',1.5)
title(['     Beamformer Design with d = \lambda/2 and M = 20.             ';
       'Conventional Beamformer (blue), and MVDR Optimum Beamformer (red).';]);
xlim([-35 35]);
ylim([-160 5]);
grid on;
xlabel('Angle (deg)');
ylabel('Power (dB)');

Calculate the SINR loss factor for the optimum beamformer:

Lsinr_opt = zeros(Nsamples,1);
Lsinr_mf  = zeros(Nsamples,1);
SNR0       = M*10^(SNR/10);
angle        = -35:70/Nsamples:35-70/Nsamples;

for k=1:Nsamples
     u = (d/lambda)*sin(angle(k)*pi/180);
     v = exp(-1i*2*pi*u*(0:M-1)')/sqrt(M);
     c_mf = v;  % This is the spatial matched filter beamformer.
     Lsinr_opt(k) = v'*InvR*v; %#ok<MINV>
     SINRout_mf = real(M*(10^(SNR/10))*(abs(c_mf'*v)^2)/(c_mf'*R_ipn*c_mf));
     Lsinr_mf(k) = SINRout_mf/SNR0;
end

Plot SINR Loss Factor.

figure('NumberTitle', 'off','Name','Figure 11.17 (b)');
plot(angle,10*log10(abs(Lsinr_opt)),angle,10*log10(abs(Lsinr_mf)),'r', 'LineWidth',1.5);
ylim([-75 5]);
xlim([-35 35]);
xlabel('Angle (deg)');
ylabel('SINR Loss (dB)');
title('SINR Loss for the MVDR Optimum Beamformer (blue) and the Conventional Beamformer (Red)');
grid on;