next up previous contents
Next: 6 asptdrnlms Up: 4 Transversal and Linear Previous: 4 asptbnlms   Contents


5 asptdrlms

Purpose
Performs filtering and coefficient update using the Data Reusing Least Mean Squares (DRLMS) algorithm. DRLMS updates the filter coefficients $k$ times each iteration using the same input data vector to speed the convergence process.

Syntax
[w,y,e] = asptdrlms(x,w,d,mu)
[w,y,e] = asptdrlms(x,w,d,mu,alg,k)

Description
asptdrlms() improves the convergence speed of the LMS algorithm by updating the filter coefficients several times using the same set of input and desired data. When the number of updates, $k=0$, DRLMS falls back to the LMS algorithm. The coefficients update is performed according to the 'alg' input argument which can take any of the following values.
  • 'lms' : the default value, uses the LMS algorithm
  • 'slms' : uses the sign LMS algorithm, the sign of the error $e(k)$ is used in the update equation instead of the error.
  • 'srlms' : uses the signed regressor LMS algorithm, the sign of the input signal $x(k)$ is used in the update equation instead of the input signal.
  • 'sslms' : uses the sign-sign-LMS algorithm, the sign of the error $e(k)$ and the sign of the input signal $x(k)$ are used in the update equation instead of the error and the input signals.
The input and output parameters of asptdrlms() for an FIR adaptive filter of $L$ coefficients are summarized below.
Input Parameters [size] :: 
   x   : vector of input samples [L x 1]
   w   : vector of filter coefficients w(n-1) [L x 1]
   d   : desired output d(n) [1 x 1]
   mu  : adaptation constant
   alg : specifies the variety of the lms to use in the 
         update equation. Must be one of the following: 
         'lms'     [default] 
         'slms'  - sign LMS, uses sign(e)
         'srlms' - signed regressor LMS, uses sign(x)
         'sslms' - sign-sign LMS, uses sign(e) and sign(x)
   k   : number of data reusing cycles
Output parameters ::
   w   : updated filter coefficients w(n)
   y   : filter output y(n)
   e   : error signal; e(n) = d(n) - y(n)



Example
Figure 4.6: The adaptive filter coefficients after convergence and the learning curve for the complex FIR system identification problem using the DRLMS for several values of the data reusing parameter $k$.
% DRLMS used in a simple system identification application.
% The learning curves of the DRLMS is compared for several 
% values of the number of data reusing cycles.
iter = 5000;                  % Number of samples to process
% Complex unknown impulse response
h    = [.9 + i*.4; 0.7+ i*.2; .5; .3+i*.1; .1];     
xn   = 2*(rand(iter,1)-0.5);  % Input signal, zero mean random.
xn   = filter(.05,[1 -.95], xn); % colored input
dn   = osfilter(h,xn);        % Unknown filter output 
M    = [0, 2, 4, 8];          % data reusing cycles
en   = zeros(iter,length(M)); % vector to collect the error

%% Processing Loop
for n = 1:length(M)
  % Initialize the DRLMS algorithm with a filter of 10 coef.
  [w,x,d,y,e]=init_drlms(10); 
  for (m=1:iter)
    x = [xn(m,:); x(1:end-1,:)];  % update the input delay line
    d = dn(m,:) + 1e-3*rand;      % additive noise of var = 1e-6 
    [w,y,e]= asptdrlms(x,w,d,0.1,'lms',M(n));
    en(m,n) = e;                  % save the last error
  end;
end;

% display the results
subplot(2,2,1);stem([real(w) imag(conj(w))]); grid;
subplot(2,2,2);eb = filter(0.1, [1 -.9] , en .* conj(en));
plot(10*log10(eb  ));grid
Running the above script will produce the graph shown in Fig. 4.6. The left side graph of the figure shows the adaptive filter coefficients after convergence. The right side graph shows the learning curve for DRLMS for $k=\{0,2,4,8\}$. The case of $k=0$ is equivalent to the LMS algorithm and is included as a reference. Fig. 4.6 suggests that the convergence speed improves as $k$ increases.


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

Algorithm
The current implementation of asptdrlms() performs the following operations
  • Filters the input signal through the adaptive filter $w(n-1)$ to produce the filter's output sample $y(n)$.
  • Calculates the error sample $e(n) = d(n) - y(n)$.
  • Updates the adaptive filter coefficients $k$ times according to the 'alg' input parameter.

Remarks
  • DRLMS improves the convergence speed of the LMS by updating the filter coefficients more frequently, and therefore consumes more processor cycles.
  • The DRLMS shows similar convergence properties to those known for the LMS algorithm.
  • asptdrlms() supports both real and complex data and filters. The adaptive filter for the complex DRLMS algorithm converges to the complex conjugate of the optimum solution.
  • asptdrlms() does not update the input delay line for $x(n)$, this has been chosen to provide more flexibility, so that the same function can be used with transversal as well as linear combiner structures. Delay line update, by inserting the newest sample at the beginning of the buffer and shifting the rest of the samples to the right, has to be done before calling asptdrlms() as in the example above.



Resources
The resources required to implement the DRLMS algorithm for a transversal adaptive FIR filter of $L$ coefficients and $k$ data reusing cycles in real time is given in the table below. The computations given are those required to process one sample.


MEMORY $2L + 5$
MULTIPLY $(2L + 1)*[k+1]$
ADD $2L[k+1]$
DIVIDE 0


See Also
INIT_ DRLMS, ASPTLMS, ASPTDRNLMS, ASPTRDRLMS, ASPTRDRNLMS..

Reference
[11] and [4] for extensive analysis of the LMS and the steepest-descent search method and [7] for an introduction to the data reusing LMS algorithms.

next up previous contents
Next: 6 asptdrnlms Up: 4 Transversal and Linear Previous: 4 asptbnlms   Contents