home *** CD-ROM | disk | FTP | other *** search
- function [PHI,GAMMA,H,J] = c2dt(A,B,C,T,lambda)
- %C2DT Conversion of continuous state space models to discrete
- % models with pure time delay in the inputs.
- % [Ad,Bd,Cd,Dd] = C2DT(A,B,C,T,lambda) converts the continuous time
- % system
- % .
- % x(t) = Ax(t) + Bu(t-lambda)
- % y(t) = Cx(t) + Du(t)
- %
- % to the discrete system with sample time T,
- %
- % x(k+1) = Ad x(k) + Bd u(k)
- % y(k) = Cd x(k) + Dd u(k)
- %
- % See also: PADE.
-
- % G. Franklin 1-17-87
- % Revised 8-23-87 JNL
- % Copyright (c) 1986-93 by the MathWorks, Inc.
-
- % From results in Franklin and Powell, Digital Control; Addison
- % and Wesley; 1980 chapter 6, pages 171-177, with extension for
- % multivariable controls and outputs.
-
- [ns,nc] = size(B);
- [no,ns] = size(C);
- l = ceil(lambda/T);
- m = l*T - lambda;
-
- s1 = expm([A*m, B*m; zeros(nc,ns+nc)]);
- s2 = expm([A*(T-m), B*(T-m); zeros(nc,ns+nc)]);
- s3 = eye((l-1)*nc);
- s4 = zeros(ns,(l-2)*nc);
- s5 = zeros((l-1)*nc,ns+nc);
- s6 = zeros(nc,ns+l*nc);
-
- PHI1 = s1(1:ns,1:ns)*s2(1:ns,1:ns);
- GAMMA1 = s1(1:ns,1:ns)*s2(1:ns,ns+1:ns+nc);
- GAMMA2 = s1(1:ns,ns+1:ns+nc);
- if l == 0
- % This is the modified z-transform case
- PHI = PHI1;
- GAMMA = PHI1 * GAMMA2 + GAMMA1;
- H = C;
- J = C * GAMMA2;
- %
- % delay less than one period
- %
- elseif l == 1
- PHI = [PHI1, GAMMA1; s6];
- GAMMA = [GAMMA2;eye(nc)];
- H = [C,zeros(no,nc)];
- J = zeros(no,nc);
- else
- PHI = [PHI1,GAMMA1,GAMMA2,s4;s5,s3;s6];
- GAMMA = [zeros(ns+(l-1)*nc,nc);eye(nc)];
- H = [C,zeros(no,l*nc)];
- J = zeros(no,nc);
- end
- end
- end
-
-
-
-