Mercurial > octave-nkf
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 |