changeset 56:3cccff82b7a6

[project @ 1993-08-11 21:49:22 by jwe]
author jwe
date Wed, 11 Aug 1993 21:49:27 +0000
parents b973bf9a9dba
children 8d4431f4a00a
files scripts/control/is_controllable.m scripts/control/is_observable.m
diffstat 2 files changed, 30 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/control/is_controllable.m	Wed Aug 11 21:42:23 1993 +0000
+++ b/scripts/control/is_controllable.m	Wed Aug 11 21:49:27 1993 +0000
@@ -2,46 +2,50 @@
 
 # usage: is_controllable (a,b{,tol})
 #
-# returns 1 the pair(a,b) is controllable, then return value is the 
-# dimension of x.  0therwise, returns a value of 0
+# Returns 1 if the pair (a, b) is controllable, or 0 if not.
 #
 # See also: size, rows, columns, length, is_matrix, is_scalar, is_vector
 
 # This should really use the method below, but I'm being lazy for now:
 #
-# Controllability is determined by applying Arnoldi iteration with complete
-# re-orthogonalization to obtain an orthogonal basis of the Krylov subspace
-#                   n-1
-# span([b,a*b,...,a^   b]).  tol is a roundoff paramter, 
-# set to 2*eps if omitted
+# Controllability is determined by applying Arnoldi iteration with
+# complete re-orthogonalization to obtain an orthogonal basis of the
+# Krylov subspace
+#                      n-1
+#   span ([b,a*b,...,a^   b]).
+#
+# tol is a roundoff paramter, set to 2*eps if omitted
 
-  if ((nargin == 2) || (nargin == 3))
-    n = is_square(a);
+  if (nargin == 2 || nargin == 3)
+
+    n = is_square (a);
     [nr, nc] = size (b);
-    if((n == 0) || (n != nr) || (nc == 0))
+
+    if (n == 0 || n != nr || nc == 0)
       retval = 0;
     else
 
       m = b;
       tmp = b;
-      for ii=1:(n-1)
-        tmp = a*tmp;
-        m = [m,tmp];
+      for ii = 1:(n-1)
+        tmp = a * tmp;
+        m = [m, tmp];
       endfor
 
-      # if n is of any significant size, m will be low rank, so be careful!
-      if(nargin == 3)
-        if(is_scalar(tol))
-          retval = (rank(m,tol) == n);
+# If n is of any significant size, m will be low rank, so be careful!
+
+      if (nargin == 3)
+        if (is_scalar (tol))
+          retval = (rank (m, tol) == n);
         else
-          error('is_controllable: tol must be a scalar')
+          error ("is_controllable: tol must be a scalar");
         endif
       else
-        retval = (rank(m) == n);
+        retval = (rank (m) == n);
       endif
     endif
   else
-    error ("usage: is_controllable (a,b)");
+    error ("usage: is_controllable (a, b)");
   endif
 
 endfunction
--- a/scripts/control/is_observable.m	Wed Aug 11 21:42:23 1993 +0000
+++ b/scripts/control/is_observable.m	Wed Aug 11 21:49:27 1993 +0000
@@ -1,18 +1,17 @@
 function retval = is_observable (a,c,tol)
 
-# usage: is_observable (a,c{,tol})
+# usage: is_observable (a, c {,tol})
 #
-# returns 1 the pair(a,c) is observable, then return value is the 
-# dimension of x.  0therwise, returns a value of 0
+# Returns 1 if the pair (a, c) is observable, or 0 if not.
 #
-# See also: size, rows, columns, length, is_matrix, is_scalar, is_vector
+# See also: size, rows, columns, length, is_matrix, is_scalar, is_vector.
 
   if (nargin == 2)
-    retval = is_controllable(a',c');
+    retval = is_controllable (a', c');
   elseif (nargin == 3)
-    retval = iscontrollable(a',c',tol);
+    retval = is_controllable (a', c', tol);
   else
-    error ("usage: is_observable (a,c{,tol})");
+    error ("usage: is_observable (a, c {,tol})");
   endif
 
 endfunction