next up previous contents
Next: 16 asptrls Up: 4 Transversal and Linear Previous: 14 asptrdrlms   Contents


15 asptrdrnlms

Purpose
Performs filtering and coefficient update using the Recent Data Reusing Normalized Least Mean Squares (RDRNLMS) algorithm. RDRNLMS 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,p] = asptrdrnlms(x,w,d,mu,p)
[w,y,e,p] = asptrdrnlms(x,w,d,mu,p,b,k)

Description
asptrdrnlms() improves the convergence speed of the NLMS algorithm by updating the filter coefficients several times using the past few sets of input and desired data. When the number of data reusing cycles, $k=0$, RDRNLMS falls back to the NLMS algorithm. Unlike the DRNLMS which uses the current data set of input and desired signals, RDRNLMS uses the current and past $k$ data sets to update the filter coefficients. The input and output parameters of asptrdrnlms() for an FIR adaptive filter of $L$ coefficients are summarized below.
Input Parameters :: 
   x   : input samples delay line 
   w   : filter coefficients vector w(n-1) 
   d   : desired output d(n) 
   mu  : adaptation constant
   p   : last estimated power of x, p(n-1) 
   b   : AR pole for recursive calculation of p
   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)
   p   : new estimated power of x, p(n)



Example
Figure 4.16: The adaptive filter coefficients after convergence and the learning curve for the complex FIR system identification problem using the RDRNLMS for several values of the data reusing parameter $k$.
% RDRNLMS used in a simple system identification application.
% The learning curves of the RDRNLMS 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);
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 RDRNLMS algorithm with a filter of 10 coef.
  [w,x,d,y,e,p]=init_rdrnlms(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,p]= asptrdrnlms(x,w,d,.005,p,.98);
    en(m,n) = e(1);  
  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.16. The left side graph of the figure shows the adaptive filter coefficients after convergence. The right side graph shows the learning curve for RDRNLMS for $k=\{0,2,4,8\}$. The case of $k=0$ is equivalent to the NLMS algorithm and is included as a reference. Fig. 4.16 suggests that the convergence speed improves as $k$ increases.


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

Algorithm
The current implementation of asptrdrnlms() 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 estimate of the input signal power, $p$.
  • Updates the adaptive filter coefficients $k$ times.

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



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


See Also
INIT_ RDRNLMS, ASPTNLMS, ASPTDRNLMS, ASPTRDRLMS.

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

next up previous contents
Next: 16 asptrls Up: 4 Transversal and Linear Previous: 14 asptrdrlms   Contents