www.pudn.com > comp_lr.rar > comp_lr.m


% Figure 8.13 
% reuqire additional functions in files 
% chan_1.m      ;white noise & noise shaping filter 
% sys_1.m       ;unknown system & additive white noise 
% lms_1.m       ;LMS adaptive filter 
% rls_1.m       ;RLS adaptive filter 
% c.f Figure 8.12 for configuration 
 
%%%----- adaptive filter convergence comparison 
clf 
colordef(1,'black') 
 
M = 1000;           % no. of data sample(iterations) 
nensem = 1;         % no. of runs for ensemble average 
 
% FIR noise shaping filter-comment out as appropriate 
h = [1 0 0]         %(a) EVR = 1 
% h = [0.2602 0.9298 0.2602] ;  %(b) EVR = 11 
% h = [0.3842 0.8704 0.3482] ;  %(c) EVR = 68 
 
nchan = max(size(h)); 
 
% FIR system to be identified 
nsys = 16;          % no. of taps 
t = 0:nsys-1; 
hopt = exp(-t);     % impulse response 
hopt = hopt/sqrt(hopt*hopt');       %normalise o/p variance to unity 
npower = -60;       % relative noise power in dB 
sigman = 10^(npower/20);            % noise rms 
 
N = M + nsys; 
tt = 0:M; 
range = 1 + nsys-2:M + nsys - 1; 
 
% ensemble average over nensem convergence plots 
lsum_norm = zeros(1,N); 
rsum_norm = zeros(1,N); 
for jj = 1:nensem 
    x = chan_1(h,N); 
    y = sys_1(hopt,x,sigman); 
    [lerr_norm,lerr_sq] = lms_1(x,y,nsys,hopt); 
    [rerr_norm,rerr_sq] = rls_1(x,y,nsys,hopt); 
    lsum_norm = lsum_norm + lerr_norm; 
    rsum_norm = rsum_norm + rerr_norm; 
end 
lsum_norm(range(1)) = 1; 
rsum_norm(range(1)) = 1; 
 
set(gca,'FontSize',18); 
plot(tt,10*log10(lsum_norm(range)/nensem),tt,10*log10(rsum_norm(range)/nensem)); 
grid 
set(gca,'FontSize',18); 
xlabel('iterations'); 
ylabel('norm(db)');