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

技术管理

开发平台:

Matlab

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