comparison scripts/control/system/sysout.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 5545c1ae9a83
comparison
equal deleted inserted replaced
7134:ff0b965b65bc 7135:8aa770b6c5bf
43 ## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> 43 ## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu>
44 ## Created: 1995-1996 44 ## Created: 1995-1996
45 45
46 function retsys = sysout (sys, opt) 46 function retsys = sysout (sys, opt)
47 47
48 if( (nargin < 1) || (nargin > 2) ) 48 if (nargin < 1 || nargin > 2)
49 print_usage (); 49 print_usage ();
50 endif 50 endif
51 51
52 if(isempty(sys)) 52 if (isempty (sys))
53 retsys = sys; 53 retsys = sys;
54 warning("sysout: empty system") 54 error ("sysout: empty system")
55 return; 55 return;
56 endif 56 endif
57 57
58 if(! isstruct(sys)) 58 if (! isstruct (sys))
59 disp("sysout: input must be a system structure") 59 error ("sysout: input must be a system structure")
60 endif 60 endif
61 61
62 ## set up output type array 62 ## set up output type array
63 if( nargin == 1 ) 63 if (nargin == 1)
64 opt = sysgettype(sys); 64 opt = sysgettype (sys);
65 else 65 elseif (! (strcmp (opt, "ss") || strcmp (opt, "tf")
66 if( ! (strcmp(opt,"ss") + strcmp(opt,"tf") + ... 66 || strcmp (opt, "zp") || strcmp (opt, "all")))
67 strcmp(opt,"zp") + strcmp(opt,"all") ) ) 67 error ("opt must be one of [], \"ss\", \"tf\", \"zp\", or \"all\"");
68 error("opt must be one of [], \"ss\", \"tf\", \"zp\", or \"all\"");
69 endif
70 endif 68 endif
71 69
72 ## now check output for each form: 70 ## now check output for each form:
73 [nn,nz,mm,pp] = sysdimensions(sys); 71 [nn, nz, mm, pp] = sysdimensions(sys);
74 if( mm > 0) 72 if (mm > 0)
75 disp("Input(s)") 73 disp ("Input(s)")
76 disp(__outlist__(sysgetsignals(sys,"in")," ")); 74 disp (__outlist__ (sysgetsignals (sys, "in"), " "));
77 else 75 else
78 disp("Input(s): none"); 76 disp ("Input(s): none");
79 endif 77 endif
80 if (pp > 0) 78 if (pp > 0)
81 disp("Output(s):") 79 disp ("Output(s):")
82 disp(__outlist__(sysgetsignals(sys,"out"), ... 80 disp (__outlist__ (sysgetsignals (sys, "out"),
83 " ",sysgetsignals(sys,"yd")) ); 81 " ", sysgetsignals (sys, "yd")) );
84 else 82 else
85 disp("Output(s): none"); 83 disp ("Output(s): none");
86 endif 84 endif
87 if(sysgettsam(sys) > 0) 85 if (sysgettsam (sys) > 0)
88 disp(["Sampling interval: ",num2str(sysgettsam(sys))]); 86 disp ("Sampling interval: %g", sysgettsam (sys));
89 str = "z"; 87 str = "z";
90 else 88 else
91 str = "s"; 89 str = "s";
92 endif 90 endif
93 91
94 ## transfer function form 92 ## transfer function form
95 if( strcmp(opt,"tf") + strcmp(opt,"all") ) 93 if (strcmp (opt, "tf") || strcmp (opt, "all"))
96 sys = sysupdate(sys,"tf"); #make sure tf is up to date 94 sys = sysupdate (sys, "tf"); #make sure tf is up to date
97 disp("transfer function form:") 95 disp ("transfer function form:")
98 [num,den] = sys2tf(sys); 96 [num, den] = sys2tf (sys);
99 tfout(num,den,str); 97 tfout (num, den, str);
100 endif 98 endif
101 99
102 if( strcmp(opt,"zp") + strcmp(opt,"all") ) 100 if (strcmp(opt, "zp") || strcmp(opt, "all"))
103 sys = sysupdate(sys,"zp"); #make sure zp is up to date 101 sys = sysupdate (sys, "zp"); #make sure zp is up to date
104 disp("zero-pole form:") 102 disp("zero-pole form:")
105 [zer,pol,kk] = sys2zp(sys); 103 [zer, pol, kk] = sys2zp (sys);
106 zpout(zer, pol, kk,str) 104 zpout (zer, pol, kk, str)
107 endif 105 endif
108 106
109 if( strcmp(opt,"ss") + strcmp(opt,"all") ) 107 if (strcmp(opt, "ss") || strcmp(opt, "all"))
110 sys = sysupdate(sys,"ss"); 108 sys = sysupdate (sys, "ss");
111 disp("state-space form:"); 109 disp ("state-space form:");
112 disp([num2str(nn)," continuous states, ", num2str(nz)," discrete states"]); 110 disp ("%d continuous states, %d discrete states", nn, nz);
113 if( nn+nz > 0) 111 if (nn+nz > 0)
114 disp("State(s):") 112 disp ("State(s):")
115 xi = (nn+1):(nn+nz); 113 xi = (nn+1):(nn+nz);
116 xd = zeros(1,nn+nz); 114 xd = zeros (1, nn+nz);
117 if(!isempty(xi)) 115 if (! isempty (xi))
118 xd(xi) = 1; 116 xd(xi) = 1;
119 endif 117 endif
120 disp(__outlist__(sysgetsignals(sys,"st")," ",xd)); 118 disp (__outlist__ (sysgetsignals (sys, "st"), " ", xd));
121 else 119 else
122 disp("State(s): none"); 120 disp ("State(s): none");
123 endif 121 endif
124 122
125 ## display matrix values? 123 ## display matrix values?
126 dmat = (max( [ (nn+nz), mm, pp ] ) <= 32); 124 dmat = (max ([nn+nz, mm, pp]) <= 32);
127 125
128 printf("A matrix: %d x %d\n",sysdimensions(sys,"st"), 126 printf ("A matrix: %d x %d\n", sysdimensions (sys, "st"),
129 sysdimensions(sys,"st")); 127 sysdimensions (sys, "st"));
130 [aa,bb,cc,dd] = sys2ss(sys); 128 [aa, bb, cc, dd] = sys2ss (sys);
131 if(dmat) disp(aa); endif 129 if (dmat)
130 disp (aa);
131 endif
132 132
133 printf("B matrix: %d x %d\n",sysdimensions(sys,"st"), 133 printf ("B matrix: %d x %d\n", sysdimensions (sys, "st"),
134 sysdimensions(sys,"in")); 134 sysdimensions (sys, "in"));
135 if(dmat) disp(bb); endif 135 if (dmat)
136 disp (bb);
137 endif
136 138
137 printf("C matrix: %d x %d\n",sysdimensions(sys,"out"), 139 printf ("C matrix: %d x %d\n", sysdimensions (sys, "out"),
138 sysdimensions(sys,"st")); 140 sysdimensions (sys, "st"));
139 if(dmat) disp(cc); endif 141 if (dmat)
142 disp (cc);
143 endif
140 144
141 printf("D matrix: %d x %d\n",sysdimensions(sys,"out"), 145 printf("D matrix: %d x %d\n", sysdimensions (sys, "out"),
142 sysdimensions(sys,"in")); 146 sysdimensions (sys, "in"));
143 if(dmat) disp(dd); endif 147 if (dmat)
148 disp (dd);
149 endif
144 endif 150 endif
145 151
146 if (nargout >= 1) 152 if (nargout >= 1)
147 retsys = sys; 153 retsys = sys;
148 endif 154 endif
149 155
150 ## restore global variable
151
152 endfunction 156 endfunction