Mercurial > hg > octave-lyh
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 |