home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21eb.zip / octave / SCRIPTS.ZIP / scripts / control / parallel.m < prev    next >
Text File  |  1999-03-05  |  2KB  |  65 lines

  1. # Copyright (C) 1996 A. Scottedward Hodel 
  2. #
  3. # This file is part of Octave. 
  4. #
  5. # Octave is free software; you can redistribute it and/or modify it 
  6. # under the terms of the GNU General Public License as published by the 
  7. # Free Software Foundation; either version 2, or (at your option) any 
  8. # later version. 
  9. # Octave is distributed in the hope that it will be useful, but WITHOUT 
  10. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  11. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
  12. # for more details.
  13. # You should have received a copy of the GNU General Public License 
  14. # along with Octave; see the file COPYING.  If not, write to the Free 
  15. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  16.  
  17. function sysp = parallel(Asys,Bsys)
  18. # function sysp = parallel(Asys,Bsys)
  19. # Forms the parallel connection of two systems.
  20. #
  21. #              ____________________
  22. #              |      ________    |
  23. #     u  ----->|----> | Asys |--->|----> y1
  24. #         |    |      --------    |
  25. #         |    |      ________    |
  26. #         |--->|----> | Bsys |--->|----> y2
  27. #              |      --------    |
  28. #              --------------------
  29. #                   Ksys
  30.  
  31. # Written by David Clem August 15, 1994
  32. # completely rewritten Oct 1996 a s hodel
  33. # SYS_INTERNAL accesses members of system structure
  34.  
  35.   if(nargin != 2)
  36.     usage("sysp = parallel(Asys,Bsys)");
  37.   endif
  38.   if(! is_struct(Asys) )
  39.     error("1st input argument is not a system data structure")
  40.   elseif (! is_struct(Bsys) )
  41.     error("2nd input argument is not a system data structure")
  42.   endif
  43.   [Ann,Anz,mA] = sysdimensions(Asys);
  44.   [Bnn,Bnz,mB] = sysdimensions(Bsys);
  45.   if(mA != mB)
  46.     error(["Asys has ",num2str(mA)," inputs, Bsys has ",num2str(mB)," inputs"]);
  47.   endif
  48.  
  49.   # save signal names
  50.   Ain = sysgetsignals(Asys,"in");
  51.  
  52.   # change signal names to avoid warning messages from sysgroup
  53.   Asys = syssetsignals(Asys,"in",sysdefioname(length(Ain),"Ain_u"));
  54.   Bsys = syssetsignals(Bsys,"in",sysdefioname(length(Ain),"Bin_u"));
  55.  
  56.   sysp = sysgroup(Asys,Bsys);
  57.   sysD = ss2sys([],[],[],[eye(mA);eye(mA)]);
  58.   
  59.   sysp = sysmult(sysp,sysD);
  60.   sysp = syssetsignals(sysp,"in",Ain);
  61.   
  62. endfunction
  63.