comparison scripts/control/system/sysgetsignals.m @ 7135:8aa770b6c5bf

[project @ 2007-11-08 18:54:10 by jwe]
author jwe
date Thu, 08 Nov 2007 18:54:10 +0000
parents 1d0d7be2d0f8
children
comparison
equal deleted inserted replaced
7134:ff0b965b65bc 7135:8aa770b6c5bf
146 146
147 ## Adapted from ss 147 ## Adapted from ss
148 148
149 if (nargin < 1 || nargin > 4) 149 if (nargin < 1 || nargin > 4)
150 print_usage (); 150 print_usage ();
151 elseif( ! isstruct(sys) ) 151 elseif (! isstruct (sys))
152 error("input argument must be a system data structure"); 152 error ("input argument must be a system data structure");
153 endif 153 endif
154 if(nargin < 4) strflg = 0; endif 154 if (nargin < 4)
155 if(nargin == 1) 155 strflg = 0;
156 sys = sysupdate(sys,"ss"); #make sure ss is up to date 156 endif
157 stname = sysgetsignals(sys,"st"); 157
158 inname = sysgetsignals(sys,"in"); 158 if (nargin == 1)
159 outname = sysgetsignals(sys,"out"); 159 sys = sysupdate (sys, "ss"); #make sure ss is up to date
160 yd = sysgetsignals(sys,"yd"); 160 stname = sysgetsignals (sys, "st");
161 elseif(!(ischar(sigid) & min(size(sigid)) == 1)) 161 inname = sysgetsignals (sys, "in");
162 error(sprintf("sigid(%dx%d) must be a string)",rows(sigid),columns(sigid))); 162 outname = sysgetsignals (sys, "out");
163 yd = sysgetsignals (sys, "yd");
164 elseif (! (ischar (sigid) && min (size (sigid)) == 1))
165 error ("sigid(%dx%d) must be a string)", rows (sigid), columns (sigid));
163 else 166 else
164 if(strcmp("st",sigid)) stname = sys.stname; 167 if (strcmp ("st", sigid))
165 elseif(strcmp("in",sigid)) stname = sys.inname; 168 stname = sys.stname;
166 elseif(strcmp("out",sigid)) stname = sys.outname; 169 elseif (strcmp ("in", sigid))
167 elseif(strcmp("yd",sigid)) stname = vec(sys.yd)'; 170 stname = sys.inname;
171 elseif (strcmp ("out", sigid))
172 stname = sys.outname;
173 elseif (strcmp ("yd", sigid))
174 stname = vec(sys.yd)';
168 else 175 else
169 error(sprintf("sigid=%s must be \"st\", \"in\", \"out\", or \"yd\"", ... 176 error ("sigid=%s must be \"st\", \"in\", \"out\", or \"yd\"", sigid);
170 sigid));
171 endif 177 endif
172 if(nargin >= 3) 178 if (nargin >= 3)
173 if( is_signal_list(signum) | ischar(signum) ) 179 if (is_signal_list (signum) || ischar (signum))
174 signum = cellidx(stname,signum); 180 signum = cellidx (stname, signum);
175 end 181 endif
176 if(max(signum) > length(stname)) 182 if (max (signum) > length (stname))
177 error(sprintf("sysgetsignals(sys,\"%s\",%d):only %d entries.\n", ... 183 error ("sysgetsignals(sys,\"%s\",%d):only %d entries",
178 sigid,signum, rows(stname))); 184 sigid, signum, rows (stname));
179 else 185 else
180 if(!isscalar(strflg)) 186 if (! isscalar (strflg))
181 error("strflg must be a scalar"); 187 error ("strflg must be a scalar");
182 endif 188 endif
183 switch(strflg) 189 switch (strflg)
184 case(0), 190 case 0
185 stname = stname(signum); 191 stname = stname (signum);
186 case(1), 192 case 1
187 if(length(signum) > 1) 193 if (length (signum) > 1)
188 error("strflg=1, length(signum) = %d",length(signum)); 194 error ("strflg=1, length(signum) = %d", length (signum));
189 endif 195 endif
190 stname = stname{signum}; 196 stname = stname{signum};
191 otherwise, 197 otherwise
192 error ("invalid value of strflg = %e", strflg); 198 error ("invalid value of strflg = %e", strflg);
193 endswitch 199 endswitch
194
195 endif 200 endif
196 endif 201 endif
197 endif 202 endif
198 203
199 endfunction 204 endfunction