lms.m
上传用户:yongtai
上传日期:2010-04-02
资源大小:334k
文件大小:1k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function [W, e] = lms(u, d, mu, decay, verbose)
  2. % function [W, e] = lms(u, d, mu, decay, verbose)
  3. % Input parameters:
  4. %       u       : matrix of training/test points - each row is
  5. %                 considered a datum
  6. %       d       : matrix of desired outputs - each row is
  7. %                 considered a datum
  8. %       mu      : step size for update of weight vectors
  9. %       decay   : set to 1 for O(1/n) decay in m
  10. %       verbose : set to 1 for interactive processing
  11. % length of maximum number of timesteps that can be predicted
  12. N    = min(size(u, 1), size(d, 1));
  13. Nin  = size(u, 2);
  14. Nout = size(d, 2);
  15. % initialize weight matrix and associated parameters for LMS predictor
  16. w = zeros(Nout, Nin);
  17. W = [];
  18. for n = 1:N,
  19. W = [W ; w];
  20. % predict next sample and error
  21. xp(n, :) = u(n, :) * w';
  22. e(n, :)  = d(n, :) - xp(n, :);
  23. ne(n)    = norm(e(n, :));
  24. if (verbose ~= 0)
  25.     disp(['time step ', int2str(n), ': mag. pred. err. = ' , num2str(ne(n))]);
  26. end;
  27. % adapt weight matrix and step size
  28. w = w + mu * e(n, :)' * u(n, :);
  29. if (decay == 1)
  30.   mu = mu * n/(n+1); % use O(1/n) decay rate
  31. end;
  32. end % for n