| Purpose |
|
Performs filtering and coefficient update using the
Data Reusing Least Mean Squares (DRLMS) algorithm.
DRLMS updates the filter coefficients |
| Syntax |
[w,y,e] = asptdrlms(x,w,d,mu)
[w,y,e] = asptdrlms(x,w,d,mu,alg,k)
|
| Description |
asptdrlms() improves the convergence speed of the LMS algorithm by
updating the filter coefficients several times using the same set of input
and desired data. When the number of updates,
asptdrlms() for an FIR adaptive filter of
Input Parameters [size] ::
x : vector of input samples [L x 1]
w : vector of filter coefficients w(n-1) [L x 1]
d : desired output d(n) [1 x 1]
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)
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)
|
| Example |
% DRLMS used in a simple system identification application.
% The learning curves of the DRLMS 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_drlms(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]= asptdrlms(x,w,d,0.1,'lms',M(n));
en(m,n) = e; % 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.6.
The left side graph of the figure shows the adaptive filter coefficients after
convergence. The right side graph shows the learning curve for DRLMS for
|
| Algorithm |
The current implementation of asptdrlms() performs the following operations
|
| Remarks |
|
| Resources |
The resources required to implement the DRLMS algorithm for a transversal adaptive FIR filter
of
|
| See Also |
| INIT_ DRLMS, ASPTLMS, ASPTDRNLMS, 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 data reusing LMS algorithms. |