comparison scripts/control/system/syscont.m @ 7136:59dcf01bb3e3

[project @ 2007-11-08 20:18:25 by jwe]
author jwe
date Thu, 08 Nov 2007 20:18:26 +0000
parents a1dbe9d80eee
children
comparison
equal deleted inserted replaced
7135:8aa770b6c5bf 7136:59dcf01bb3e3
45 45
46 function [csys, Acd, Ccd] = syscont (sys) 46 function [csys, Acd, Ccd] = syscont (sys)
47 47
48 if (nargin != 1) 48 if (nargin != 1)
49 print_usage (); 49 print_usage ();
50 elseif (!isstruct(sys)) 50 elseif (! isstruct (sys))
51 error("sys must be in system data structure form"); 51 error ("sys must be in system data structure form");
52 endif 52 endif
53 53
54 sys = sysupdate (sys, "ss"); 54 sys = sysupdate (sys, "ss");
55 [n_tot, st_c, st_d, y_c, y_d] = __syscont_disc__ (sys); # get ranges 55 [n_tot, st_c, st_d, y_c, y_d] = __syscont_disc__ (sys); # get ranges
56 56
57 ## assume there's nothing there; build partitions as appropriate 57 ## assume there's nothing there; build partitions as appropriate
58 Acc = Acd = Bcc = Ccc = Ccd = Dcc = []; 58 Acc = Acd = Bcc = Ccc = Ccd = Dcc = [];
59 59
60 if(isempty(st_c) & isempty(y_c)) 60 if (isempty (st_c) && isempty (y_c))
61 error("syscont: expecting continuous states and/or continuous outputs"); 61 error ("syscont: expecting continuous states and/or continuous outputs");
62 elseif (isempty(st_c)) 62 elseif (isempty (st_c))
63 warning("syscont: no continuous states"); 63 warning ("syscont: no continuous states");
64 elseif(isempty(y_c)) 64 elseif (isempty (y_c))
65 warning("syscont: no continuous outputs"); 65 warning ("syscont: no continuous outputs");
66 endif 66 endif
67 67
68 [sys_a, sys_b, sys_c, sys_d ] = sys2ss(sys); 68 [sys_a, sys_b, sys_c, sys_d ] = sys2ss (sys);
69 [sys_stname, sys_inname, sys_outname] = sysgetsignals(sys); 69 [sys_stname, sys_inname, sys_outname] = sysgetsignals (sys);
70 [sys_n, sys_nz, sys_m, sys_p] = sysdimensions(sys); 70 [sys_n, sys_nz, sys_m, sys_p] = sysdimensions (sys);
71 if(!isempty(st_c)) 71 if (! isempty (st_c))
72 Acc = sys_a(st_c,st_c); 72 Acc = sys_a(st_c,st_c);
73 stname = sys_stname(st_c); 73 stname = sys_stname(st_c);
74 Bcc = sys_b(st_c,:); 74 Bcc = sys_b(st_c,:);
75 Ccc = sys_c(y_c,st_c); 75 Ccc = sys_c(y_c,st_c);
76 Acd = sys_a(st_c,st_d); 76 Acd = sys_a(st_c,st_d);
77 else 77 else
78 stname=[]; 78 stname = [];
79 endif 79 endif
80 outname = sys_outname(y_c); 80 outname = sys_outname(y_c);
81 Dcc = sys_d(y_c,:); 81 Dcc = sys_d(y_c,:);
82 Ccd = sys_c(y_c,st_d); 82 Ccd = sys_c(y_c,st_d);
83 inname = sys_inname; 83 inname = sys_inname;
84 84
85 csys = ss(Acc,Bcc,Ccc,Dcc,0,sys_n,0,stname,inname,outname); 85 csys = ss (Acc, Bcc, Ccc, Dcc, 0, sys_n, 0, stname, inname, outname);
86 86
87 endfunction 87 endfunction