next up previous contents
Next: 5 asptsovvsslms Up: 8 Nonlinear Adaptive Algorithms Previous: 3 asptsovrls   Contents


4 asptsovtdlms

Purpose
Sample per sample filtering and coefficient update using the Second Order Volterra Transform Domain Least Mean Squares Adaptive algorithm. Filtering and coefficients update of both the linear and non-linear coefficients are performed in the transform-domain (T).

Syntax
[W,y,e,p,xb,w] = asptsovtdlms(xn,xb,W,d,mu,L1,L2,p,b,T)

Description
asptsovtdlms() implements the second order Volterra transform domain LMS filter (SOVTDLMS). The SOVTDLMS algorithm calculates the filter output $y(n)$ and updates the filter coefficients vector $\vW (n)$ in the transform domain. The filter output is the sum of the outputs of the linear filter part $\vW _l(n)$ and the nonlinear part $\vW _n(n)$ as follows.
\begin{displaymath}
y(n) = \sum \limits_{m_1=0}^{L1-1} W_l(m1) x(n-m_1) + \sum ...
...1-1}
\Sigma_{m_2=m_1}^{L2-1} W_n(m1,m2) x(n-m_1) x(n-m_2)
\end{displaymath} (78)

The filter coefficients vector $\vW (n) = [\vW _l(n);\vW _n(n)]$ is updated according to the TDLMS algorithm in the transform domain. The memory depth of the linear and nonlinear filter parts are governed independently by the $L1$ and $L2$ parameters passed to init_sovtdlms(). The input and output parameters of asptsovtdlms() for an FIR adaptive filter of linear memory length $L1$ and nonlinear memory length $L2$ are summarized below.
Input Parameters [Size]:: 
  xn  : new input sample [1 x 1]
  xb  : buffer of input samples [L1 + sum(1:L2) x 1]
  W   : previous T-domain coef. vector W(n-1) [L1 + sum(1:L2) x 1]
  d   : desired output d(n) [1 x 1]
  mu  : adaptation constants [1 x 1]
  L1  : memory length of linear part of w
  L2  : memory length of non-linear part of w
  p   : last estimated power of x p(n-1) [L1 + sum(1:L2) x 1]
  b   : AR pole for recursive calculation of p
  T   : The transform to be used {fft|dct|dst|...}
        user defined transforms are also supported.
        use transform T and its inverse iT. 

Output parameters::
  W   : updated T-domain coef. vector
  y   : filter output y(n)
  e   : error signal; e(n) = d(n)-y(n)
  p   : new estimated power of x p(n)
  xb  : updated buffer of input samples
  w   : updated t-domain coef. vector w(n), only 
        calculated if this output argument is given.



Example
Figure 8.4: The adaptive filter coefficients after convergence and the learning curve for the FIR system identification problem using the SOVTDLMS algorithm.
% SOVTDLMS used in a simple system identification application.
% By the end of this script the adaptive filter w should have 
% the same coefficients as the nonlinear unknown filter h.
iter = 5000;         % Number of samples to process
L1   = 4;
L2   = 4;
% The nonlinear unknown plant transfer function
% y(n) =  x(n) - x(n-1) - .125x(n-2) + .3125x(n-3)
%        +x(n)x(n) -.3x(n)x(n-1) + .2x(n)x(n-2) -.5x(n)x(n-3)
%        +.5x(n-1)x(n-1) -.3x(n-1)x(n-2) -.6x(n-1)x(n-3)
%        -.6x(n-2)x(n-2) +.5x(n-2)x(n-3) -.1x(n-3)x(n-3)
h  =[1;-1;-0;.125;.3125;1;-.3;.2;-.5;.5;-.3;-.6;-.6;.5;-.1];
xn =2*(rand(iter,1)-0.5);      % Input signal, zero mean random.
dn =sovfilt(h,xn,4,4);         % Unknown filter output 
en =zeros(iter,1);             % vector to collect the error
[W,w,xb,d,y,e,p]=init_sovtdlms(L1,L2); % Initialize SOVTDLMS

%% Processing Loop
for (m=1:iter)
   d = dn(m,:) + .001 * rand ;   % additive noise of var = 1e-6 
   % call SOVNLMS to calculate the filter output, estimation error
   % and update the coefficients. 
   [W,y,e,p,xb,w] = asptsovtdlms(xn(m),xb,W,d,.05,L1,L2,p,.98,'fft');
   en(m,:) = e;                  % save the last error sample 
end;

% display the results
% note that w converges to conj(h) for complex data
subplot(2,2,1);stem([real(w) imag(conj(w))]); grid;
subplot(2,2,2);eb = filter(.1,[1 -.9], en .* conj(en));
plot(10*log10(eb  ));grid
Running the above script will produce the graph shown in Fig. 8.4. The left side graph of the figure shows the adaptive filter coefficients after convergence which are almost identical to the unknown filter h. The right side graph shows the square error in dB versus time during the adaptation process. The lower limit of the error signal power in the learning curve is defined here by the additive white noise added at the filter output (-60 dB).


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

Algorithm
The current implementation of asptsovtdlms() performs the following operations
  • Constructs the new input samples delay line elements from the previous delay line and new input sample.
  • Calculates the T-transformation of the delay line samples.
  • Filters the input delay line through the adaptive filter $W(n-1)$ in the T-domain to produce the filter output $y(n)$.
  • Calculates the error sample $e(n) = d(n) - y(n)$.
  • Estimates the power of the input delay line in the T-domain.
  • Updates the adaptive filter coefficients in the T-domain, and calculates the time domain coefficients if necessary.

Remarks
SOVTDLMS uses the regular TDLMS algorithm to update both the linear ($\vW _l$) and nonlinear ($\vW _n$) parts of the adaptive filter. Therefore, the convergence properties of the SOVTDLMS are similar to those of the TDLMS. asptsovtdlms also,
  • supports both real and complex data and filters. The adaptive filter for the complex SOVTDLMS algorithm converges to the complex conjugate of the optimum solution.
  • internally updates the input delay line for $xb(n)$ which includes the past linear and nonlinear samples needed for the next iteration. The past samples kept depend on the L1 and L2 parameters.

Resources
The resources required to implement a SOVTDLMS filter of linear memory length $L1$ and nonlinear memory length $L2$ are given below. The computations given are those required to process one sample. The complexity of the transformation T is indicated as $C(T)$ in the table below.


MEMORY $4(L1+sum(1:L2) + 6$
MULTIPLY $5(L1+sum(1:L2)+ L2 + C(T)+1$
ADD $3(L1+sum(1:L2)$
DIVIDE (L1+sum(1:L2)

See Also
INIT_ SOVTDLMS, ASPTTDLMS.

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

next up previous contents
Next: 5 asptsovvsslms Up: 8 Nonlinear Adaptive Algorithms Previous: 3 asptsovrls   Contents