www.pudn.com > aft.rar > run_dctlmseq.m


function   run_dctlmseq(rp) 
 
% Computer Experiment 
% Section 10.5, Adaptive Filter Theory, 3rd edition 
% Adaptive equalization 
 
disp('dctlmseq') 
seed = 0:(rp.Niter-1); 
h = [1/2*(1+cos(2*pi/rp.T*((1:3) - 2)))]; 
M = rp.M; 
alpha = 1 / 2 / M; 
 
Lambdax = []; 
 
Npred = rp.Ndata + length(h) - 1; 
Wx    = zeros(M, Npred-M+1); 
E     = []; 
 
for iter = 1:rp.Niter, 
  disp([rp.T iter]); 
  rand( 'seed', seed(iter)); 
  randn('seed', seed(iter)); 
  a  = 2*(rand(rp.Ndata, 1) > 0.5) -1; 
  Xi = conv(a, h); 
  Xi = Xi + sqrt(rp.var_v)*randn(length(Xi), 1); 
  Y  = [zeros(rp.tau, 1) ; a(1:rp.Ndata)]; 
   
  if rp.type == 'A', 
     disp('type A') 
     [Wo, e, Lambda] = dct_lms(Xi, Y, M, alpha, rp.beta, rp.gamma, rp.verbose); 
  end 
  if rp.type == 'C', 
     disp('type C') 
     [Wo, e, Lambda] = dct_lms_C(Xi, Y, M, alpha, rp.beta, rp.gamma, rp.verbose); 
  end 
 
  Wx = Wx + Wo(:, M:Npred); % ignore 1st M-1 incomplete weight vectors 
  E = [E; e(M+1:Npred).']; 
  Lambdax = [Lambdax; Lambda(M, :)]; 
end; % for iter 
 
Wx = Wx / rp.Niter; 
eval(['save  ' rp.name])