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

  1. %
  2. % SQRMTX produces a minimal realization of the TF : (T12)'(T11)(T21)',
  3. %      (T12p)'(T11)(T21)', (T12)'(T11)(T21p)', and (T12p)'(T11)(T21p)'
  4. %      for H-inf phase (III) computation.  This will replace the 
  5. %      lengthy model reduction work.
  6.  
  7. % R. Y. Chiang & M. G. Safonov 1/8/88
  8. % Copyright (c) 1988 by the MathWorks, Inc.
  9. % All Rights Reserved.
  10.  
  11. %      (Ver. 1.1, rewritten on Jan. 8, 1987 for considering the four 
  12. %       different cases).
  13. %
  14. asqm  = at11;
  15. %
  16. % -------------------------------------------- Square Case :
  17. %
  18. bsqm1 = bt11;
  19. bsqm2  = [bt12;zeros(rat0,cbt1)];
  20. %
  21. csqm1 = ct11;
  22. csqm2  = [zeros(rct2,rat1) ct21];
  23. %
  24. dsqm11 = dt11;
  25. dsqm12 = dt12;
  26. dsqm21 = dt21;
  27. dsqm22 = zeros(rct2,cbt1);
  28. %
  29. % ---------------------------------------- Nonsquare Cases :
  30. %
  31. if case == 2
  32.    [rbt1p,cbt1p] = size(bt1p);
  33.    bsqm2 = [bt12 bt1p;zeros(rat0,(cbt1+cbt1p))];
  34.    dsqm12 = [dt12 dt1p];
  35.    dsqm22 = zeros(rct2,(cbt1+cbt1p));
  36. end
  37. %
  38. if case == 3
  39.    [rct2p,cct2p] = size(ct2p);
  40.    csqm2 = [csqm2;zeros(rct2p,rat1) ct2p];
  41.    dsqm21 = [dt21;dt2p];
  42.    dsqm22 = zeros((rct2+rct2p),cbt1);
  43. end
  44. %
  45. if case == 4
  46.    [rbt1p,cbt1p] = size(bt1p);
  47.    [rct2p,cct2p] = size(ct2p);
  48.    bsqm2 = [bt12 bt1p;zeros(rat0,(cbt1+cbt1p))];
  49.    csqm2 = [csqm2;zeros(rct2p,rat1) ct2p];
  50.    dsqm12 = [dt12 dt1p];
  51.    dsqm21 = [dt21;dt2p];
  52.    dsqm22 = zeros((rct2+rct2p),(cbt1+cbt1p));
  53. end
  54. %
  55. bsqm = [bsqm1 bsqm2];
  56. csqm = [csqm1;csqm2];
  57. %
  58. [rdsq12,cdsq12] = size(dsqm12);
  59. dsqm12 = dsqm12 + eye(rdsq12);
  60. [rdsq21,cdsq21] = size(dsqm21);
  61. dsqm21 = dsqm21 + eye(rdsq21);
  62. dsqm = [dsqm11 dsqm12;dsqm21 dsqm22];
  63. %
  64. % ------------------------------------------- Block Feedback :
  65. %
  66. fbk = [zeros(rdsq21,rdsq12) eye(rdsq21);...
  67.        eye(rdsq12) zeros(rdsq12,rdsq21)];
  68. minp = [eye(rdsq21);zeros(rdsq12,rdsq21)];
  69. noutp = [eye(rdsq12) zeros(rdsq12,rdsq21)];
  70. [Acl,Bcl,Ccl,Dcl] = interc(asqm,bsqm,csqm,dsqm,minp,noutp,fbk);
  71. %
  72. % --------------------------------------- State Space of Htt :
  73. %
  74. ahtt = Acl; 
  75. bhtt = Bcl(:,1:cbt2); 
  76. chtt = Ccl(1:cbt2,:); 
  77. dhtt = dt12'*dt11*dt21';
  78. %
  79. [rDcl,cDcl] = size(Dcl);
  80. [rbt12p,cbt12p] = size(bt1p);
  81. [rct21p,cct21p] = size(ct2p);
  82. %
  83. % ----------------------------------- State Space of G1 & G2 :
  84. %                                     (depends on each case)
  85. %
  86. if case == 2
  87.    ag2 = Acl; 
  88.    bg2 = Bcl;
  89.    cg2 = Ccl((rDcl-cbt12p+1):rDcl,:); 
  90.    dg2 = dt1p'*dt11*dt21';
  91. end
  92. %
  93. if case == 3
  94.    ag1 = Acl; 
  95.    bg1 = Bcl(:,(cDcl-rct21p+1):cDcl);
  96.    cg1 = Ccl; 
  97.    dg1 = dt12'*dt11*dt2p';
  98. end
  99. %
  100. if case == 4
  101.    ag2 = Acl; 
  102.    bg2 = Bcl(:,1:cbt2);
  103.    cg2 = Ccl((rDcl-cbt12p+1):rDcl,:); 
  104.    dg2 = dt1p'*dt11*dt21';
  105.    ag1 = Acl; 
  106.    bg1 = Bcl(:,(cDcl-rct21p+1):cDcl);
  107.    cg1 = Ccl(1:cbt2,:); 
  108.    dg1 = dt12'*dt11*dt2p';
  109. end
  110. %
  111.