annotate scripts/control/tzero.m @ 60:671f8bf989d8

[project @ 1993-08-13 21:03:40 by jwe] Initial revision
author jwe
date Fri, 13 Aug 1993 21:03:40 +0000
parents
children ca37b3c9d066
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
1 function zr = tzero (a, b, c, d, bal)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
2
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
3 # Compute the transmission zeros of a, b, c, d.
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
4 #
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
5 # bal = balancing option (see balance); default is "B".
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
6 #
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
7 # Needs to incorporate mvzero algorithm to isolate finite zeros.
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
8
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
9 if (nargin == 4)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
10 bal = "B";
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
11 elseif (nargin ~= 5)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
12 error("tzero: illegal number of arguments")
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
13 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
14
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
15 [n, m, p] = abcdchk (a, b, c, d);
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
16
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
17 if(m != p)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
18
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
19 disp("warning: tzero: number of inputs,outputs differ -- squaring up")
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
20
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
21 if (p > m)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
22 disp (" by padding b, d with zeros")
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
23 b = [b, zeros (n, p-m)];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
24 d = [d, zeros (p, p-m)];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
25 m = p;
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
26 else
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
27 disp (" by padding c,d with zeros")
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
28 c = [c; zeros (m-p, n)];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
29 d = [d; zeros (m-p, m)];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
30 p = m;
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
31 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
32
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
33 disp ("This is a kludge. Try again with SISO system.")
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
34
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
35 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
36
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
37 if (n != -1)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
38 ab = [-a -b; c d];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
39 bb = [eye (n), zeros (n, m); zeros (p, n), zeros (p, m)];
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
40 [ab, bb] = balance (ab, bb);
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
41 zr = qzval (ab, bb);
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
42 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
43
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
44 endfunction