Mercurial > hg > octave-nkf
diff scripts/control/system/syscont.m @ 4460:cef48c4b902d
[project @ 2003-07-11 18:37:48 by jwe]
author | jwe |
---|---|
date | Fri, 11 Jul 2003 18:37:48 +0000 |
parents | 22bd65326ec1 |
children | b8105302cfe8 |
line wrap: on
line diff
--- a/scripts/control/system/syscont.m +++ b/scripts/control/system/syscont.m @@ -41,48 +41,51 @@ function [csys, Acd, Ccd] = syscont (sys) - save_empty = empty_list_elements_ok; - empty_list_elements_ok = 1; + save_warn_empty_list_elements = warn_empty_list_elements; + unwind_protect + warn_empty_list_elements = 0; - if (nargin != 1) - usage("[csys,Acd,Ccd,Dcd] = syscont(sys)"); - elseif (!isstruct(sys)) - error("sys must be in system data structure form"); - endif + if (nargin != 1) + usage("[csys,Acd,Ccd,Dcd] = syscont(sys)"); + elseif (!isstruct(sys)) + error("sys must be in system data structure form"); + endif - sys = sysupdate (sys, "ss"); - [n_tot, st_c, st_d, y_c, y_d] = __syscont_disc__ (sys); # get ranges + sys = sysupdate (sys, "ss"); + [n_tot, st_c, st_d, y_c, y_d] = __syscont_disc__ (sys); # get ranges - ## assume there's nothing there; build partitions as appropriate - Acc = Acd = Bcc = Ccc = Ccd = Dcc = []; + ## assume there's nothing there; build partitions as appropriate + Acc = Acd = Bcc = Ccc = Ccd = Dcc = []; - if(isempty(st_c) & isempty(y_c)) - error("syscont: expecting continous states and/or continous outputs"); - elseif (isempty(st_c)) - warning("syscont: no continuous states"); - elseif(isempty(y_c)) - warning("syscont: no continuous outputs"); - endif + if(isempty(st_c) & isempty(y_c)) + error("syscont: expecting continous states and/or continous outputs"); + elseif (isempty(st_c)) + warning("syscont: no continuous states"); + elseif(isempty(y_c)) + warning("syscont: no continuous outputs"); + endif - [sys_a, sys_b, sys_c, sys_d ] = sys2ss(sys); - [sys_stname, sys_inname, sys_outname] = sysgetsignals(sys); - [sys_n, sys_nz, sys_m, sys_p] = sysdimensions(sys); - if(!isempty(st_c)) - Acc = sys_a(st_c,st_c); - stname = sys_stname(st_c); - Bcc = sys_b(st_c,:); - Ccc = sys_c(y_c,st_c); - Acd = sys_a(st_c,st_d); - else - stname=[]; - endif - outname = sys_outname(y_c); - Dcc = sys_d(y_c,:); - Ccd = sys_c(y_c,st_d); - inname = sys_inname; + [sys_a, sys_b, sys_c, sys_d ] = sys2ss(sys); + [sys_stname, sys_inname, sys_outname] = sysgetsignals(sys); + [sys_n, sys_nz, sys_m, sys_p] = sysdimensions(sys); + if(!isempty(st_c)) + Acc = sys_a(st_c,st_c); + stname = sys_stname(st_c); + Bcc = sys_b(st_c,:); + Ccc = sys_c(y_c,st_c); + Acd = sys_a(st_c,st_d); + else + stname=[]; + endif + outname = sys_outname(y_c); + Dcc = sys_d(y_c,:); + Ccd = sys_c(y_c,st_d); + inname = sys_inname; - csys = ss2sys(Acc,Bcc,Ccc,Dcc,0,sys_n,0,stname,inname,outname); + csys = ss2sys(Acc,Bcc,Ccc,Dcc,0,sys_n,0,stname,inname,outname); - empty_list_elements_ok = save_empty; + unwind_protect_cleanup + warn_empty_list_elements = save_warn_empty_list_elements; + end_unwind_protect endfunction