home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / control / abcddim.m next >
Text File  |  1996-09-28  |  2KB  |  69 lines

  1. # Copyright (C) 1993, 1994, 1995 John W. Eaton
  2. # This file is part of Octave.
  3. # Octave is free software; you can redistribute it and/or modify it
  4. # under the terms of the GNU General Public License as published by the
  5. # Free Software Foundation; either version 2, or (at your option) any
  6. # later version.
  7. # Octave is distributed in the hope that it will be useful, but WITHOUT
  8. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  9. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  10. # for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with Octave; see the file COPYING.  If not, write to the Free
  13. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  14.  
  15. function [n, m, p] = abcddim (a, b, c, d)
  16.  
  17. # Usage: [n, m, p] = abcddim (a, b, c, d)
  18. #
  19. # Check for compatibility of the dimensions of the matrices defining
  20. # the linear system (a, b, c, d).
  21. #
  22. # Returns n = number of system states,
  23. #         m = number of system inputs,
  24. #         p = number of system outputs.
  25. #
  26. # Returns n = m = p = -1 if the system is not compatible.
  27.  
  28. # Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993.
  29.  
  30.   if (nargin != 4)
  31.     error ("abcddim: invalid number of arguments.  need four.")
  32.   endif
  33.  
  34.   n = m = p = -1;
  35.  
  36.   [an, am] = size(a);
  37.   if (an != am)
  38.     error ("abcddim: a is not square");
  39.   endif
  40.  
  41.   [bn, bm] = size(b);
  42.   if (bn != am)
  43.     error ("abcddim: a and b are not compatible");
  44.   endif
  45.  
  46.   [cn, cm] = size(c);
  47.   if (cm != an)
  48.     error ("abcddim: a and c are not compatible");
  49.   endif
  50.  
  51.   [dn, dm] = size(d);
  52.   if (cn != dn)
  53.     error ("abcddim: c and d are not compatible");
  54.   endif
  55.  
  56.   if (bm != dm)
  57.     error ("abcddim: b and d are not compatible");
  58.   endif
  59.  
  60.   n = an;
  61.   m = bm;
  62.   p = cn;
  63.  
  64. endfunction
  65.