annotate scripts/control/tzero.m @ 73:f3c9042fd609

[project @ 1993-08-30 14:49:08 by jwe]
author jwe
date Mon, 30 Aug 1993 14:54:55 +0000
parents ca37b3c9d066
children 16a24e76d6e0
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
71
ca37b3c9d066 [project @ 1993-08-30 14:39:54 by jwe]
jwe
parents: 60
diff changeset
3 # Usage: zr = tzero (a, b, c, d, bal)
ca37b3c9d066 [project @ 1993-08-30 14:39:54 by jwe]
jwe
parents: 60
diff changeset
4 #
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
5 # Compute the transmission zeros of a, b, c, d.
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 # bal = balancing option (see balance); default is "B".
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 # Needs to incorporate mvzero algorithm to isolate finite zeros.
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
10
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
11 # Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993.
71
ca37b3c9d066 [project @ 1993-08-30 14:39:54 by jwe]
jwe
parents: 60
diff changeset
12
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
13 if (nargin == 4)
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
14 bal = "B";
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
15 elseif (nargin != 5)
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
16 error ("tzero: illegal number of arguments");
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
17 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
18
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
19 [n, m, p] = abcddim (a, b, c, d);
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
20
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
21 if (n > 0 && m > 0 && p > 0)
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
22 if (m != p)
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
23 fprintf (stderr "tzero: number of inputs,outputs differ. squaring up");
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
24 if (p > m)
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
25 fprintf (stderr, " by padding b and d with zeros.");
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
26 b = [b, zeros (n, p-m)];
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
27 d = [d, zeros (p, p-m)];
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
28 m = p;
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
29 else
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
30 fprintf (stderr, " by padding c and d with zeros.");
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
31 c = [c; zeros (m-p, n)];
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
32 d = [d; zeros (m-p, m)];
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
33 p = m;
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
34 endif
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
35 fprintf (stderr, "This is a kludge. Try again with SISO system.");
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
36 endif
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
37 ab = [-a, -b; c, d];
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
38 bb = [eye (n), zeros (n, m); zeros (p, n), zeros (p, m)];
73
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
39 [ab,bb] = balance (ab, bb);
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
40 zr = -qzval (ab, bb);
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
41 else
f3c9042fd609 [project @ 1993-08-30 14:49:08 by jwe]
jwe
parents: 71
diff changeset
42 error ("tzero: a, b, c, d not compatible. exiting");
60
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
43 endif
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
44
671f8bf989d8 [project @ 1993-08-13 21:03:40 by jwe]
jwe
parents:
diff changeset
45 endfunction