# HG changeset patch # User jwe # Date 745105767 0 # Node ID 3cccff82b7a63e5c94921b9289c14bf181c2c1e4 # Parent b973bf9a9dba77722fa8874c33e93f5fc8beb081 [project @ 1993-08-11 21:49:22 by jwe] diff -r b973bf9a9dba -r 3cccff82b7a6 scripts/control/is_controllable.m --- 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 diff -r b973bf9a9dba -r 3cccff82b7a6 scripts/control/is_observable.m --- 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