Mercurial > hg > octave-nkf
view scripts/control/is_observable.m @ 3240:2e74d8aa1a20
[project @ 1999-04-07 18:33:23 by jwe]
author | jwe |
---|---|
date | Wed, 07 Apr 1999 18:34:20 +0000 |
parents | 98e15955107e |
children | 6dd06d525de6 |
line wrap: on
line source
# Copyright (C) 1993, 1994, 1995 John W. Eaton # # This file is part of Octave. # # Octave is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2, or (at your option) any # later version. # # Octave is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with Octave; see the file COPYING. If not, write to the Free # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. function [retval,U] = is_observable (a,c,tol) # [retval,U] = is_observable (a,c,tol) # usage: is_observable (a , c {,tol}) # or is_observable (sys {,tol}) # # Default: tol = 10*norm(a,'fro')*eps # # Returns 1 if the system, a, is observable, 1 if the pair (a, c) is # observable, or 0 if not. # # See also: size, rows, columns, length, is_matrix, is_scalar, is_vector. # Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. # Updated by John Ingram (ingraje@eng.auburn.edu) July 1996. if( nargin < 1) usage("[retval,U] = is_observable(a , c {, tol})"); elseif(is_struct(a)) # system form if(nargin == 2) tol = c; elseif(nargin > 2) usage("[retval,U] = is_observable(sys {, tol})"); endif [a,b,c] = sys2ss(a); elseif(nargin > 3) usage("[retval,U] = is_observable(a , c {, tol})"); endif if(exist("tol")) [retval,U] = is_controllable (a', c', tol); else [retval,U] = is_controllable (a', c'); endif endfunction