next up previous contents
Next: 7 asptleakynlms Up: 4 Transversal and Linear Previous: 5 asptdrlms   Contents


6 asptdrnlms

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

Syntax
[w,y,e,p] = asptdrnlms(x,w,d,mu,p)
[w,y,e,p] = asptdrnlms(x,w,d,mu,p,b,k)

Description
asptdrnlms() improves the convergence speed of the NLMS algorithm by updating the filter coefficients several times using the same set of input and desired data. When the number of updates, $k=0$, DRNLMS falls back to the NLMS algorithm. The input and output parameters of asptdrnlms() for an FIR adaptive filter of $L$ coefficients are summarized below.
Input Parameters [Size]:: 
   x   : input samples delay line [L x 1]
   w   : filter coefficients vector w(n-1) [L x 1]
   d   : desired output d(n) [1 x 1]
   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.7: The adaptive filter coefficients after convergence and the learning curve for the complex FIR system identification problem using the DRNLMS for several values of the data reusing parameter $k$.
% DRNLMS used in a simple system identification application.
% The learning curves of the DRNLMS 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 DRNLMS algorithm with a filter of 10 coef.
  [w,x,d,y,e,p]=init_drnlms(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,p]= asptdrnlms(x,w,d,0.005,p,0.98,M(n));
    en(m,n) = e;                  % save the last error sample  
  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.7. The left side graph of the figure shows the adaptive filter coefficients after convergence. The right side graph shows the learning curve for DRNLMS 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.7 suggests that the convergence speed improves as $k$ increases.


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

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



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


See Also
INIT_ DRNLMS, ASPTNLMS, ASPTDRLMS, 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 DRNLMS.

next up previous contents
Next: 7 asptleakynlms Up: 4 Transversal and Linear Previous: 5 asptdrlms   Contents