| [FD,GD,AD,ND,BD]=cvrt(F,G,A,N,B,TS)
|
function [FD,GD,AD,ND,BD]=cvrt(F,G,A,N,B,TS)
%[FD,GD,AD,ND,BD]=cvrt(F,G,A,N,B,TS)
% Converts continuous system and quadratic performance index to
% equivalent discrete system and quadratic performance index;
% Jcont=integral(x'Ax+2*x'Nu+u'Bu)dt, dx/dt=Fx+Gu;
% Jdisc=sum(x'ADx+2x'NDu+u'BDu), x(k+1)=FDx(k)+GDu(k);
% TS=sample time; 7/90
%
[NS,NC]=size(G); Z1=zeros(NS);Z2=zeros(NS,NC); B2=sqrt(B);
S=[-F',eye(NS),Z1,Z2;Z1,-F',A,N/B2; Z1,Z1,F,G/B2; Z2',Z2',Z2',...
zeros(NC)]; SD=expm(S*TS); K1=SD([1:NS],[3*NS+1:3*NS+NC]);
G2=SD([NS+1:2*NS],[2*NS+1:3*NS]);
H2=SD([NS+1:2*NS],[3*NS+1:3*NS+NC]);
FD=SD([2*NS+1:3*NS],[2*NS+1:3*NS]);
G3=SD([2*NS+1:3*NS],[3*NS+1:3*NS+NC]); GD=G3*B2;
AD1=FD'*G2;AD=(AD1+AD1')/2; ND=FD'*H2*B2; BD1=G'*FD'*K1;
BD=TS*B+B2'*(BD1+BD1')*B2;
|
|