next up previous contents
Next: 14 echo_ bfdaf Up: 10 Applications and Examples Previous: 12 beambb_ lclms   Contents


13 beamrf_ lms

Purpose
Simulation of a sidelobe canceler application using an adaptive array with the array coefficients adjusted using the LMS algorithms. The array will produce a spatial notch in the directions of the strong signals (interferences), where all signals are assumed real and narrow-band.

Syntax
beamrf_lms

Description
The block diagram of an adaptive array functioning as a sidelobe canceler is shown in Fig. 10.25. The array is composed of two omnidirectional (equally sensitive in all directions) sensors. The two array elements receive narrow-band (modulated signals at RF frequency for instance) incident signals that include one signal and one jammer at the same center frequency $\omega_c$. At this frequency, complete control is achieved using only two coefficients one to control the amplitude and the other to control the phase. In Fig. 10.25 this is implemented by two coefficients with input signals at $90^{\circ}$ phase difference. In this arrangement, the adaptive filter weights are completely controlled by the signal incident with higher power [11]. Assuming that the jammer has higher power than the useful signal, after convergence, the adaptive filter output will contain a component close to the jammer component in the primary signal, and the array output $e(n)$ will contain only the useful signal. This will cause the sensitivity pattern (the array output power divided by the power of an incident signal at angle spanning the range $0 < \theta < 2\pi$) to have a spatial notch in the direction of arrival of the jammer. This kind of sidelobe canceler rely on the phase difference between the signals received at the different array elements. For two array elements spaced $L$ meters apart, an incident signal with an angle of arrival $\theta$ will be received by the elements with phase difference equals to $D = (L \sin(\theta) \omega_c / c)$ rad., where $c$ is the wave propagation speed [m/s] and $\omega_c$ is the (analog) center frequency. In general, $M$ array elements are required to cancel $(M-1)$ jammers by duplicating the reference branch in Fig. 10.25. beamrf_lms first sets the array parameters, and then creates and initializes an adaptive filter of length $2(M-1)$, where $(M-1)$ is the number of reference branches, by calling init_lms(). The adaptive filter in this application has an adaptive linear combiner structure with input signals equal to those received by the reference sensors and their $90\circ$ phase shifted versions. A processing loop is then started, in each iteration of this loop asptlms() is called with a new primary sample and a new set of reference samples to calculate the filter output, the error, and update the filter coefficients. This simulation script uses the standard ASPT iteration progress window (IPWIN). The IPWIN has four buttons which allow you to stop and continue the simulation, show or hide the simulation graph window, break out of the processing loop, and quit the simulation. After processing all the samples, or on pressing the break or stop buttons, the sensor signal $e(n)$ is written to a wave audio file and a graph presenting the array performance is generated.



Figure 10.25: Block diagram of an adaptive array functioning as a sidelobe canceler.


\epsfig{file=/home/john/winD/docs/aspt/aspt/figs/beam_rf.eps,width=\textwidth}


Code
clear all
rand('seed',12)
iter   = 5000;                    % samples to process
c      = 3450;                    % propagation speed
fc     = 40000;                   % Carrier frequency
Wc     = 2*pi*fc;                 % Carrier radian freq
lambda = 2*pi*c/Wc;               % Carrier wave length
Fs     = 100000;                  % sampling frequency
T      = 1/Fs;                    % sampling period
Wo     = Wc * T;                  % sampled carrier freq

Po     = [ 90 45 0];              % arrival angles [deg]
Avar   = [1 .001 2];              % variance of each sig.
M      = length(Po);              % # array elements
L      = lambda/2 * (1:M-1);      % distances vector
Po     = pi*Po/180;               % arrival angles [rad]
Do     = (Wc/c)*(L' * sin(Po));   % phase shifts [rad]

ph     = 2*pi*rand(iter,M);       %random phase
A      = repmat(sqrt(Avar),[iter 1]).*randn(iter,M);          
mu     = 0.05;                    % step size
E      = init_ipwin(iter,1);      % Initialize IPWIN

% need M-1 filters each of 2 coefficients
[w,x,d,y,e] = init_lms(2*(M-1));

for n=1:iter
   % signal at the primary branch + receiver noise
   d = sum(A(n,:) .* cos(n*Wo + ph(n,:) ),2) + 1e-3*rand;;

   % signals at the reference branches
   for i=1:M-1
      r            = 1e-3*rand;     % receiver noise
      x(2*(i-1)+1) = sum(A(n,:).*cos(n*Wo + ph(n,:)-Do(i,:)),2)+r;
      x(2*i)       = sum(A(n,:).*sin(n*Wo+ph(n,:)-Do(i,:)),2) +r;
   end
   % calculate output, error, and update coefficients
   [w,y,e]		= asptlms(x,w,d,mu);
   
   % update the Iteration Progress Window  
   [E, stop,brk]	= update_ipwin(E,e,d, 'b', w, L, Wo, c*T);
	% handle the Stop button
	while (stop ~= 0), stop 	= getStop; end;
	% handle the Break button
	if (brk), plot_beam(E, w, L, Wo, c*T); break; end;
end

plot_beam(E, w, L, Wo, c*T);



Results
Figure 10.26: Performance of an adaptive sidelobe canceler implemented using the LMS algorithm.
Running the above script will produce the graph shown in Fig. 10.26. The left panel of this figure shows the learning curve for the adaptive coefficients and the right panel shows the directivity pattern of the array. Since the two strong signals used in the script are arriving at angles $0\circ$ and $90\circ$, the adaptive coefficients have been adjusted to make spatial dips in those two directions.


\epsfig{file=/home/john/winD/docs/aspt/aspt/figs/beamrflms.eps,width=\textwidth}


See Also
INIT_ LMS, ASPTLMS, ASPTLCLMS, BEAMBB_ LCLMS.

Reference
[11] for an introduction to adaptive array signal processing.

next up previous contents
Next: 14 echo_ bfdaf Up: 10 Applications and Examples Previous: 12 beambb_ lclms   Contents