home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 9.ddi / IDENT.DI$ / PREDICTS.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  1.1 KB  |  48 lines

  1. function yhat = predicts(z,th,m)
  2. %PREDICTS
  3. %    yhat = predicts(Z,TH,M)
  4. %
  5. %    Auxiliary function to PREDICT
  6.  
  7. %    L. Ljung 10-2-90,11-2-92
  8. %    Copyright (c) 1990 by the MathWorks, Inc.
  9. %    All Rights Reserved.
  10.  
  11.  
  12. [Ncap,nc]=size(z);
  13. nu=th(1,3);ny=th(1,4);
  14. if m==inf, yhat=idsimss(z(:,ny+1:ny+nu),th);return,end
  15. [nr,nc]=size(th);
  16. nd=th(1,5);
  17. sspmod=getmfth(th);
  18.  
  19. [etapar,P,lambda]=th2par(th);
  20. if length(etapar)==0,etapar=0;end
  21. arg=getargth(th);
  22. T=th(1,2);
  23. if any(th(2,8)==[2 3]),Tmod=-1;else Tmod=abs(T);end
  24. [A,B,C,D,K,X0]=feval(sspmod,etapar,Tmod,arg);
  25. x=ltitr(A-K*C,[K B-K*D],z,X0);
  26. if m==1, yhat=(C*x')'; if ~isempty(D),yhat=yhat + (D*z(:,ny+1:ny+nu)')';end
  27. else
  28.  
  29. F=D;Mm=eye(length(A));
  30. for km=1:m-1
  31. F=[F C*Mm*B];
  32. Mm=A*Mm;
  33. end
  34. yhat=zeros(Ncap,ny);%corr 911111
  35. for ky=1:ny
  36. for ku=1:nu
  37. yhat(:,ky)=yhat(:,ky)+filter(F(ky,ku:nu:m*nu),1,z(:,ny+ku));
  38. end
  39. end
  40. if isempty(yhat),yhat=zeros(Ncap,ny);end
  41. yhat(m:Ncap,:)=yhat(m:Ncap,:)+(C*Mm*x(1:Ncap-m+1,:)')';
  42. x=ltitr(A,B,z(1:m,ny+1:ny+nu),X0);
  43. yhat(1:m,:)=(C*x')'; 
  44. if ~isempty(D),yhat(1:m,:)=yhat(1:m,:) + (D*z(1:m,ny+1:ny+nu)')';end
  45. end
  46.  
  47.  
  48.