lms.m
上传用户:kendun0711
上传日期:2007-06-03
资源大小:32k
文件大小:1k
源码类别:

技术管理

开发平台:

Matlab

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