diff 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
line wrap: on
line diff
--- a/scripts/control/tzero.m
+++ b/scripts/control/tzero.m
@@ -8,41 +8,38 @@
 #
 # Needs to incorporate mvzero algorithm to isolate finite zeros.
 
-# Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993
+# Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993.
 
   if (nargin == 4)
     bal = "B";
-  elseif (nargin ~= 5)
-    error("tzero: illegal number of arguments")
+  elseif (nargin != 5)
+    error ("tzero: illegal number of arguments");
   endif
 
-  [n, m, p] = abcdchk (a, b, c, d);
-
-  if(m != p)
-
-    disp("warning: tzero: number of inputs,outputs differ -- squaring up")
+  [n, m, p] = abcddim (a, b, c, d);
 
-    if (p > m)
-      disp ("  by padding b, d with zeros")
-      b = [b, zeros (n, p-m)];
-      d = [d, zeros (p, p-m)];
-      m = p;
-    else
-      disp ("  by padding c,d with zeros")
-      c = [c; zeros (m-p, n)];
-      d = [d; zeros (m-p, m)];
-      p = m;
+  if (n > 0 && m > 0 && p > 0)
+    if (m != p)
+      fprintf (stderr "tzero: number of inputs,outputs differ.  squaring up");
+      if (p > m)
+	fprintf (stderr, "       by padding b and d with zeros.");
+	b = [b, zeros (n, p-m)];
+	d = [d, zeros (p, p-m)];
+	m = p;
+      else
+	fprintf (stderr, "       by padding c and d with zeros.");
+	c = [c; zeros (m-p, n)];
+	d = [d; zeros (m-p, m)];
+	p = m;
+      endif
+      fprintf (stderr, "This is a kludge.  Try again with SISO system.");
     endif
-
-    disp ("This is a kludge.  Try again with SISO system.")
-
-  endif
-
-  if (n != -1)
-    ab = [-a -b; c d];
+    ab = [-a, -b; c, d];
     bb = [eye (n), zeros (n, m); zeros (p, n), zeros (p, m)];
-    [ab, bb] = balance (ab, bb);
-    zr = qzval (ab, bb);
+    [ab,bb] = balance (ab, bb);
+    zr = -qzval (ab, bb);
+  else
+    error ("tzero: a, b, c, d not compatible.  exiting");
   endif
 
 endfunction