www.pudn.com > LMS407adapter_filter.zip > LMS.m


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% LMS Algorithm %
% %
% Written By: Sundar Sankaran and A. A. (Louis) Beex %
% DSP Research Laboratory %
% Dept. of Electrical and Comp. Engg %
% Virginia Tech %
% Blacksburg VA 24061-0111 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

randn('seed', 0) ;
rand('seed', 0) ;

NoOfData = 8000 ;  % Set no of data points used for training
Order = 32 ;    % Set the adaptive filter order

Mu = 0.01 ;    % Set the step-size constant

x = randn(NoOfData, 1) ;% Input assumed to be white
h = rand(Order, 1) ;  % System picked randomly
d = filter(h, 1, x) ;  % Generate output (desired signal)

% Initialize LMS

w = zeros(Order,1) ;

% LMS Adaptation

for n = Order : NoOfData
  D = x(n:-1:n-Order+1) ;
  d_hat(n) = w'*D ;
  e(n) = d(n) - d_hat(n) ;
  w = w + Mu*e(n)*D ;
  w_err(n) = norm(h - w) ;
end ;

% Plot results

figure ;
plot(20*log10(abs(e))) ;
title('Learning Curve') ;
xlabel('Iteration Number') ;
ylabel('Output Estimation Error in dB') ;

figure ;
semilogy(w_err) ;
title('Weight Estimation Error') ;
xlabel('Iteration Number') ;
ylabel('Weight Error in dB') ;