function [A,E] = lms(x,d,mu,nord,a0) %LMS Adaptive filtering using the Widrow-Hoff LMS algorithm. %--- %USAGE [A,E] = lms(x,d,mu,nord,a0) % % x : input data to the adaptive filter. % d : desired output % mu : adaptive filtering update (step-size) parameter % nord : number of filter coefficients % a0 : (optional) initial guess for FIR filter % coefficients - a row vector. If a0 is omitted % then a0=0 is assumed. % % The output matrix A contains filter coefficients. % - The n'th row contains the filter coefficients at time n % - The m'th column contains the m'th filter coeff vs. time. % - The output vector E contains the error sequence versus time. % % see also NLMS and RLS % %--------------------------------------------------------------- % copyright 1996, by M.H. Hayes. For use with the book % "Statistical Digital Signal Processing and Modeling" % (John Wiley & Sons, 1996). %--------------------------------------------------------------- X=convm(x,nord); [M,N] = size(X); if nargin < 5, a0 = zeros(1,N); end a0 = a0(:).'; E=zeros(M-N+1,1); A=zeros(M-N+1,nord); E(1) = d(1) - a0*X(1,:).'; A(1,:) = a0 + mu*E(1)*conj(X(1,:)); if M>1 for k=2:M-N+1; E(k) = d(k) - A(k-1,:)*X(k,:).'; A(k,:) = A(k-1,:) + mu*E(k)*conj(X(k,:)); end; end;