AR_to_SS.m
上传用户:mozhenmi
上传日期:2008-02-18
资源大小:13k
文件大小:1k
源码类别:

其他小程序

开发平台:

Matlab

  1. function [F,H,Q,R,initx, initV] = AR_to_SS(coef, C, y)
  2. %
  3. % Convert a vector auto-regressive model of order k to state-space form.
  4. % [F,H,Q,R] = AR_to_SS(coef, C, y)
  5. % X(i) = A(1) X(i-1) + ... + A(k) X(i-k+1) + v, where v ~ N(0, C)
  6. % and A(i) = coef(:,:,i) is the weight matrix for i steps ago.
  7. % We initialize the state vector with [y(:,k)' ... y(:,1)']', since
  8. % the state vector stores [X(i) ... X(i-k+1)]' in order.
  9. [s s2 k] = size(coef); % s is the size of the state vector
  10. bs = s * ones(1,k); % size of each block
  11. F = zeros(s*k);
  12. for i=1:k
  13.    F(block(1,bs), block(i,bs)) = coef(:,:,i);
  14. end
  15. for i=1:k-1
  16.   F(block(i+1,bs), block(i,bs)) = eye(s);
  17. end
  18. H = zeros(1*s, k*s);
  19. % we get to see the most recent component of the state vector 
  20. H(block(1,bs), block(1,bs)) = eye(s); 
  21. %for i=1:k
  22. %  H(block(1,bs), block(i,bs)) = eye(s);
  23. %end
  24. Q = zeros(k*s);
  25. Q(block(1,bs), block(1,bs)) = C;
  26. R = zeros(s);
  27. initx = zeros(k*s, 1);
  28. for i=1:k
  29.   initx(block(i,bs)) = y(:, k-i+1); % concatenate the first k observation vectors
  30. end
  31. initV = zeros(k*s); % no uncertainty about the state (since perfectly observable)