comparison scripts/control/system/sysmin.m @ 4771:b8105302cfe8

[project @ 2004-02-16 17:45:50 by jwe]
author jwe
date Mon, 16 Feb 2004 17:45:50 +0000
parents 3234a698073a
children bdbee5282954
comparison
equal deleted inserted replaced
4770:ef5e598f099b 4771:b8105302cfe8
62 Cc = cc(:,crng); 62 Cc = cc(:,crng);
63 Cd = cc(:,drng); 63 Cd = cc(:,drng);
64 64
65 cstnam = stnam(crng); 65 cstnam = stnam(crng);
66 dstnam = stnam(drng); 66 dstnam = stnam(drng);
67 cinnam = append(innam,stnam(drng)); 67 cinnam = __sysconcat__(innam,stnam(drng));
68 coutnam = append(outnam,stnam(drng)); 68 coutnam = __sysconcat__(outnam,stnam(drng));
69 csys = ss2sys(Ac,[Bc,Acd],[Cc;Adc]); 69 csys = ss(Ac,[Bc,Acd],[Cc;Adc]);
70 csys = syssetsignals(csys,"st",cstnam); 70 csys = syssetsignals(csys,"st",cstnam);
71 csys = syssetsignals(csys,"in",cinnam); 71 csys = syssetsignals(csys,"in",cinnam);
72 csys = syssetsignals(csys,"out",coutnam); 72 csys = syssetsignals(csys,"out",coutnam);
73 73
74 # reduce continuous system, recombine with discrete part 74 # reduce continuous system, recombine with discrete part
88 Acd = cbb(:,m+(1:nz)); 88 Acd = cbb(:,m+(1:nz));
89 Cc = ccc(1:p,:); 89 Cc = ccc(1:p,:);
90 Adc = ccc(p + (1:nz),:); 90 Adc = ccc(p + (1:nz),:);
91 91
92 # recombine to reduce discrete part of the system 92 # recombine to reduce discrete part of the system
93 dinnam = append(innam,cstnam); 93 dinnam = __sysconcat__(innam,cstnam);
94 doutnam = append(outnam,cstnam); 94 doutnam = __sysconcat__(outnam,cstnam);
95 dsys = ss2sys(Ad,[Bd,Adc],[Cd;Acd],[],tsam); 95 dsys = ss(Ad,[Bd,Adc],[Cd;Acd],[],tsam);
96 dsys = syssetsignals(dsys,"st",dstnam); 96 dsys = syssetsignals(dsys,"st",dstnam);
97 dsys = syssetsignals(dsys,"in",dinnam); 97 dsys = syssetsignals(dsys,"in",dinnam);
98 dsys = syssetsignals(dsys,"out",doutnam); 98 dsys = syssetsignals(dsys,"out",doutnam);
99 99
100 # reduce discrete subsystem 100 # reduce discrete subsystem
109 dstnam = sysgetsignals(dsys,"st"); 109 dstnam = sysgetsignals(dsys,"st");
110 Bd = dbb(:,1:m); 110 Bd = dbb(:,1:m);
111 Adc = dbb(:,m+(1:cn)); 111 Adc = dbb(:,m+(1:cn));
112 Cd = dcc(1:p,:); 112 Cd = dcc(1:p,:);
113 Acd = dcc(p+(1:cn),:); 113 Acd = dcc(p+(1:cn),:);
114 stnam = append(cstnam,dstnam); 114 stnam = __sysconcat__(cstnam,dstnam);
115 aa = [Ac, Acd; Adc, Ad]; 115 aa = [Ac, Acd; Adc, Ad];
116 bb = [Bc; Bd]; 116 bb = [Bc; Bd];
117 cc = [Cc, Cd]; 117 cc = [Cc, Cd];
118 retsys = ss2sys([Ac, Acd; Adc, Ad], [Bc ; Bd], [Cc, Cd], dd, tsam, ... 118 retsys = ss([Ac, Acd; Adc, Ad], [Bc ; Bd], [Cc, Cd], dd, tsam, ...
119 cn, nz, stnam, innam, outnam, find(yd == 1)); 119 cn, nz, stnam, innam, outnam, find(yd == 1));
120 end 120 end
121 endif 121 endif
122 else 122 else
123 Ts = sysgettsam(sys); 123 Ts = sysgettsam(sys);
156 nc = no = nz = columns(aa); 156 nc = no = nz = columns(aa);
157 nn = 0; 157 nn = 0;
158 endswitch 158 endswitch
159 innam = sysgetsignals(sys,"in"); 159 innam = sysgetsignals(sys,"in");
160 outnam= sysgetsignals(sys,"out"); 160 outnam= sysgetsignals(sys,"out");
161 retsys = ss2sys(aa,bb,cc,dd,Ts,nn,nz,[],innam,outnam); 161 retsys = ss(aa,bb,cc,dd,Ts,nn,nz,[],innam,outnam);
162 case(1), 162 case(1),
163 ## reduced model with physical states 163 ## reduced model with physical states
164 [cflg,Uc] = is_controllable(sys); xc = find(max(abs(Uc')) != 0); 164 [cflg,Uc] = is_controllable(sys); xc = find(max(abs(Uc')) != 0);
165 [oflg,Uo] = is_observable(sys); xo = find(max(abs(Uo')) != 0); 165 [oflg,Uo] = is_observable(sys); xo = find(max(abs(Uo')) != 0);
166 xx = intersection(xc,xo); 166 xx = intersection(xc,xo);