next up previous contents
Next: 15 asptrdrnlms Up: 4 Transversal and Linear Previous: 13 asptrcpbfdaf   Contents


14 asptrdrlms

Purpose
Performs filtering and coefficient update using the Recent Data Reusing Least Mean Squares (RDRLMS) algorithm. RDRLMS updates the filter coefficients $k$ times each iteration using the last $k$ input and desired data sets to speed the convergence process.

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

Description
asptrdrlms() improves the convergence speed of the LMS algorithm by updating the filter coefficients several times using the last few sets of input and desired data. When the number of data using cycles, $k=0$, RDRLMS falls back to the LMS algorithm. Unlike the DRLMS which uses the current data set of input and desired signals, RDRLMS uses the current and past $k$ data sets to update the filter coefficients. 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 asptrdrlms() for an FIR adaptive filter of $L$ coefficients are summarized below.
Input Parameters :: 
   x   : vector of input samples x(n)
   w   : vector of filter coefficients w(n-1)
   d   : desired output d(n) 
   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)
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.15: The adaptive filter coefficients after convergence and the learning curve for the complex FIR system identification problem using the RDRLMS for several values of the data reusing parameter $k$.
% RDRLMS used in a simple system identification application.
% The learning curves of the RDRLMS 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_rdrlms(10,M(n)); 
  for (m=1:iter)
    x = [xn(m,:); x(1:end-1,:)];  % update the input delay line
    d = [dn(m,:) + 1e-3*rand; d(1:end-1)]; 
    w,y,e]= asptrdrlms(x,w,d,.2,'lms');
    en(m,n) = e(1);               % 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.15. The left side graph of the figure shows the adaptive filter coefficients after convergence. The right side graph shows the learning curve for RDRLMS 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.15 suggests that the convergence speed improves as $k$ increases.


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

Algorithm
The current implementation of asptrdrlms() 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
  • RDRLMS improves the convergence speed of the LMS by updating the filter coefficients more frequently, and therefore consumes more processor cycles.
  • The RDRLMS shows similar convergence properties to those known for the LMS algorithm.
  • asptrdrlms() supports both real and complex data and filters. The adaptive filter for the complex RDRLMS algorithm converges to the complex conjugate of the optimum solution.
  • asptrdrlms() 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 asptrdrlms() as in the example above.



Resources
The resources required to implement the RDRLMS 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 + 2k + 4$
MULTIPLY $(2L + 1)*[k+1]$
ADD $2L[k+1]$
DIVIDE 0


See Also
INIT_ RDRLMS, ASPTLMS, ASPTDRLMS, ASPTRDRNLMS.

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

next up previous contents
Next: 15 asptrdrnlms Up: 4 Transversal and Linear Previous: 13 asptrcpbfdaf   Contents