Mercurial > octave-nkf
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); |