| Purpose |
|
Performs filtering and coefficient update using the
Recent Data Reusing Normalized Least Mean Squares
(RDRNLMS) algorithm.
RDRNLMS updates the filter coefficients |
| Syntax |
[w,y,e,p] = asptrdrnlms(x,w,d,mu,p)
[w,y,e,p] = asptrdrnlms(x,w,d,mu,p,b,k)
|
| Description |
asptrdrnlms() improves the convergence speed of the NLMS algorithm by
updating the filter coefficients several times using the past few sets of input
and desired data. When the number of data reusing cycles, asptrdrnlms()
for an FIR adaptive filter of Input Parameters :: x : input samples delay line w : filter coefficients vector w(n-1) d : desired output d(n) 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 |
% RDRNLMS used in a simple system identification application.
% The learning curves of the RDRNLMS 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);
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 RDRNLMS algorithm with a filter of 10 coef.
[w,x,d,y,e,p]=init_rdrnlms(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,p]= asptrdrnlms(x,w,d,.005,p,.98);
en(m,n) = e(1);
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.16.
The left side graph of the figure shows the adaptive filter coefficients after
convergence. The right side graph shows the learning curve for RDRNLMS for
|
| Algorithm |
The current implementation of asptrdrnlms() performs the following operations
|
| Remarks |
|
| Resources |
The resources required to implement the RDRNLMS algorithm for a transversal adaptive FIR filter
of
|
| See Also |
| INIT_ RDRNLMS, ASPTNLMS, ASPTDRNLMS, ASPTRDRLMS. |
| Reference |
| [11] and [4] for extensive analysis of the LMS and the steepest-descent search method and [7] for an introduction to the RDRNLMS. |