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

  1. function [AD,BD1,BD2,CCD1,CCD2,DD11,DD12,DD21,DD22] = augd(Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13)
  2. %
  3. % [TSS_D] = AUGD(TSS_,SS_D) or
  4. % [AD,BD1,BD2,CCD1,CCD2,DD11,DD12,DD21,DD22] = AUGD(A,B1,B2,C1,C2,..
  5. % D11,D12,D21,D22,AD,BD,CCD,DD) produces a two-port augmented plant
  6. %  TSS_D that absorbs the scaling matrices D(s) and inv(D(s))
  7. %  such that
  8. %                                -1
  9. %        (TSS_D) := D(s) P(s) D(s)    
  10. %                 = MKSYS(AD,BD1,BD2,CCD1,CCD2,DD11,DD12,DD21,DD22,'tss');
  11. %
  12. %
  13. %  Input Data: P = TSS_ = SYSTEM(A,B1,B2,C1,C2,D11,D12,D21,D22,'tss')
  14. %              D = SS_D = SYSTEM(AD,BD,CCD,DD);
  15.  
  16. % R. Y. Chiang & M. G. Safonov 
  17. % Copyright (c) 1988 by the MathWorks, Inc.
  18. % All Rights Reserved.
  19.  
  20. inargs = '(a,b1,b2,c1,c2,d11,d12,d21,d22,ad,bd,ccd,dd)';
  21. eval(mkargs(inargs,nargin,'tss,ss'));
  22.  
  23. if exist('ad')==2,ad=[];end  % This takes care empty matrix bug in eval
  24.  
  25. if min(size(ad))==0
  26.   di=inv(dd);
  27.   AD = a;
  28.   BD1 = b1*di;
  29.   BD2 = b2;
  30.   CCD1 = dd*c1;
  31.   CCD2 = c2;
  32.   DD11 = dd*d11*di;
  33.   DD12 = dd*d12;
  34.   DD21 = d21*di;
  35.   DD22 = d22;
  36. else
  37.   [ai,bi,ci,di] = ssinv(ad,bd,ccd,dd);
  38.  
  39.   %
  40.   xd = size(ad)*[1;0];
  41.   xp = size(a)*[1;0];
  42.   u1 = size(b1)*[0;1];
  43.   u2 = size(b2)*[0;1];
  44.   y1 = size(c1)*[1;0];
  45.   y2 = size(c2)*[1;0];
  46.  
  47.   AD = [ai        zeros(xd,xp) zeros(xd,xd);
  48.         b1*ci     a                   zeros(xp,xd);
  49.         bd*d11*ci bd*c1               ad];
  50.   BD1 = [bi;b1*di;bd*d11*di];
  51.   BD2 = [zeros(xd,u2);b2;bd*d12];
  52.   CCD1 = [dd*d11*ci dd*c1 ccd];
  53.   CCD2 = [d21*ci c2 zeros(y2,xd)];
  54.   DD11 = dd*d11*di;
  55.   DD12 = dd*d12;
  56.   DD21 = d21*di;
  57.   DD22 = d22;
  58. end
  59. %
  60. if xsflag
  61.    AD = mksys(AD,BD1,BD2,CCD1,CCD2,DD11,DD12,DD21,DD22,'tss');
  62. end
  63. %
  64. % ------ End of AUGD.M % RYC/MGS %