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

  1. function [PHI,GAMMA,H,J] = c2dt(A,B,C,T,lambda)
  2. %C2DT    Conversion of continuous state space models to discrete 
  3. %       models with pure time delay in the inputs.
  4. %    [Ad,Bd,Cd,Dd] = C2DT(A,B,C,T,lambda) converts the continuous time
  5. %    system
  6. %          .
  7. %             x(t) = Ax(t) + Bu(t-lambda)
  8. %          y(t) = Cx(t) + Du(t)
  9. %
  10. %    to the discrete system with sample time T,
  11. %
  12. %          x(k+1) = Ad x(k) + Bd u(k)
  13. %               y(k) = Cd x(k) + Dd u(k) 
  14. %
  15. %    See also: PADE.
  16.  
  17. %    G. Franklin 1-17-87
  18. %    Revised 8-23-87 JNL
  19. %    Copyright (c) 1986-93 by the MathWorks, Inc.
  20.  
  21. %    From results in Franklin and Powell, Digital Control; Addison
  22. %    and Wesley; 1980 chapter 6, pages 171-177, with extension for
  23. %    multivariable controls and outputs.
  24.  
  25. [ns,nc] = size(B);
  26. [no,ns] = size(C);
  27. l = ceil(lambda/T);
  28. m = l*T - lambda;
  29.  
  30. s1 = expm([A*m, B*m; zeros(nc,ns+nc)]);
  31. s2 = expm([A*(T-m), B*(T-m); zeros(nc,ns+nc)]);
  32. s3 = eye((l-1)*nc);
  33. s4 = zeros(ns,(l-2)*nc);
  34. s5 = zeros((l-1)*nc,ns+nc);
  35. s6 = zeros(nc,ns+l*nc);
  36.  
  37. PHI1 = s1(1:ns,1:ns)*s2(1:ns,1:ns);
  38. GAMMA1 = s1(1:ns,1:ns)*s2(1:ns,ns+1:ns+nc);
  39. GAMMA2 = s1(1:ns,ns+1:ns+nc);
  40. if l == 0
  41.     % This is the modified z-transform case
  42.     PHI = PHI1;
  43.     GAMMA = PHI1 * GAMMA2 + GAMMA1;
  44.     H     =  C;
  45.     J     =  C * GAMMA2;
  46. %
  47. %    delay less than one period
  48. %
  49.     elseif l == 1
  50.         PHI = [PHI1, GAMMA1; s6];
  51.         GAMMA  = [GAMMA2;eye(nc)];
  52.         H      =  [C,zeros(no,nc)];
  53.         J      =  zeros(no,nc);
  54.         else
  55.             PHI   =  [PHI1,GAMMA1,GAMMA2,s4;s5,s3;s6];
  56.             GAMMA =  [zeros(ns+(l-1)*nc,nc);eye(nc)];
  57.                    H     =  [C,zeros(no,l*nc)];
  58.             J      =  zeros(no,nc);
  59.         end
  60.     end    
  61. end
  62.  
  63.  
  64.  
  65.