| Purpose |
|
Performs filtering and coefficient update using the
Recent Data Reusing Least Mean Squares (RDRLMS)
algorithm.
RDRLMS updates the filter coefficients |
| Syntax |
[w,y,e] = asptrdrlms(x,w,d,mu)
[w,y,e] = asptrdrlms(x,w,d,mu,alg)
|
| Description |
asptrdrlms() improves the convergence speed of the LMS algorithm by
updating the filter coefficients several times using the last few sets of input
and desired data. When the number of data using cycles,
asptrdrlms() for an FIR adaptive filter of
Input Parameters ::
x : vector of input samples x(n)
w : vector of filter coefficients w(n-1)
d : desired output d(n)
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)
Output parameters ::
w : updated filter coefficients w(n)
y : filter output y(n)
e : error signal; e(n) = d(n) - y(n)
|
| Example |
% RDRLMS used in a simple system identification application.
% The learning curves of the RDRLMS 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_rdrlms(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]= asptrdrlms(x,w,d,.2,'lms');
en(m,n) = e(1); % 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.15.
The left side graph of the figure shows the adaptive filter coefficients after
convergence. The right side graph shows the learning curve for RDRLMS for
|
| Algorithm |
The current implementation of asptrdrlms() performs the following operations
|
| Remarks |
|
| Resources |
The resources required to implement the RDRLMS algorithm for a transversal adaptive FIR filter
of
|
| See Also |
| INIT_ RDRLMS, ASPTLMS, ASPTDRLMS, ASPTRDRNLMS. |
| Reference |
| [11] and [4] for extensive analysis of the LMS and the steepest-descent search method and [7] for an introduction to the RDRLMS. |