| Purpose |
| Efficient implementation of the LMS-Newton algorithm using autoregressive modeling. |
| Syntax |
[k,w,b,u,P,y,e]=asptarlmsnewt(k,w,x,b,u,P,d,mu_p,mu_w,maxk)
|
| Description |
|
The LMS-Newton is a stochastic implementation of the Newton search method which solves the
eigenvalue spread problem in adaptive filters with colored input signals. The update equation
for the LMS-Newton is given by (see Fig. 2.5 and Fig. 2.6)
where asptarlmsnewt() implements the LMS-Newton method efficiently
by recursively estimating the term
asptarlmsnewt() of
Input Parameters [Size]::
k : vector of lattice predictor coefficients [Mx1]
w : vector of linear combiner coefficients [Lx1]
x : vector of input samples [Lx1]
b : vector of backward prediction error [Lx1]
u : u = R^(-1)*x calculated recursively [Lx1]
P : vector of last estimated power of b [M+1x1]
d : desired response
mu_p: adaptation constant for the predictor coefficients
mu_w: adaptation constant for the combiner coefficient
maxk: maximum allowed value of abs(k)
Output parameters::
k : updated lattice predictor coefficients
w : updated linear combiner coefficients
b : updated backward prediction error
u : updated {R^(-1)*x}
P : updated power estimate of b
y : linear combiner output
e : error signal [e = d - y]
|
| Example |
% ARLMSNEWT used in a simple system identification application. % By the end of this script the adaptive filter w % should have the same coefficients as the unknown filter h. iter = 5000; % 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 % although xn is real, dn will be complex since h is complex dn = osfilter(h,xn); % Unknown filter output en = zeros(iter,1); % error signal % Initialize ARLMSNEWT with M=2, L=10 M = 2; % AR model length L = 10; % filter length mu_w = .01; % linear combiner step size mu_p = 0.001; % lattice predictor step size [k,w,x,b,u,P,d,y,e]=init_arlmsnewt(L,M); %% Processing Loop for (m=1:iter) x = [xn(m,:);x(1:end-1,:) ]; % update the delay line d = dn(m,:) + 1e-3*rand; % additive noise var = 1e-6 [k,w,b,u,P,y,e]=asptarlmsnewt(k,w,x,b,u,P,d,mu_p,mu_w,0.99); % save the last error sample to plot later en(m,:) = e; 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 ));gridRunning the above script will produce the graph shown in Fig. 4.1. The left side panel of this 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, which is usually called the learning curve. 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).
|
| Algorithm |
asptarlmsnewt() performs the following operations every sample
|
| Resources |
The resources required to implement the ARLMSNEWT with a filter of length
|
| See Also |
| INIT_ ARLMSNEWT, MODEL_ ARLMSNEWT. |
| Reference |
| [2] and [4] for analysis of the adaptive Lattice filters, [2] and [11] for analysis of the LMS-Newton algorithm. |