home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fb.zip / octave / SCRIPTS.ZIP / scripts / control / parallel.m < prev    next >
Encoding:
Text File  |  1999-12-15  |  2.2 KB  |  66 lines

  1. ## Copyright (C) 1996 Auburn University.  All Rights Reserved.
  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. ## 
  10. ## Octave is distributed in the hope that it will be useful, but WITHOUT 
  11. ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  12. ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
  13. ## for more details.
  14. ## 
  15. ## You should have received a copy of the GNU General Public License 
  16. ## along with Octave; see the file COPYING.  If not, write to the Free 
  17. ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. 
  18.  
  19. ## function sysp = parallel(Asys,Bsys)
  20. ## Forms the parallel connection of two systems.
  21. ##
  22. ##              ____________________
  23. ##              |      ________    |
  24. ##     u  ----->|----> | Asys |--->|----> y1
  25. ##         |    |      --------    |
  26. ##         |    |      ________    |
  27. ##         |--->|----> | Bsys |--->|----> y2
  28. ##              |      --------    |
  29. ##              --------------------
  30. ##                   Ksys
  31.  
  32. function sysp = parallel (Asys, Bsys)
  33.  
  34.   ## Written by David Clem August 15, 1994
  35.   ## completely rewritten Oct 1996 a s hodel
  36.   ## SYS_INTERNAL accesses members of system structure
  37.  
  38.   if(nargin != 2)
  39.     usage("sysp = parallel(Asys,Bsys)");
  40.   endif
  41.   if(! is_struct(Asys) )
  42.     error("1st input argument is not a system data structure")
  43.   elseif (! is_struct(Bsys) )
  44.     error("2nd input argument is not a system data structure")
  45.   endif
  46.   [Ann,Anz,mA] = sysdimensions(Asys);
  47.   [Bnn,Bnz,mB] = sysdimensions(Bsys);
  48.   if(mA != mB)
  49.     error(["Asys has ",num2str(mA)," inputs, Bsys has ",num2str(mB)," inputs"]);
  50.   endif
  51.  
  52.   ## save signal names
  53.   Ain = sysgetsignals(Asys,"in");
  54.  
  55.   ## change signal names to avoid warning messages from sysgroup
  56.   Asys = syssetsignals(Asys,"in",sysdefioname(length(Ain),"Ain_u"));
  57.   Bsys = syssetsignals(Bsys,"in",sysdefioname(length(Ain),"Bin_u"));
  58.  
  59.   sysp = sysgroup(Asys,Bsys);
  60.   sysD = ss2sys([],[],[],[eye(mA);eye(mA)]);
  61.   
  62.   sysp = sysmult(sysp,sysD);
  63.   sysp = syssetsignals(sysp,"in",Ain);
  64.   
  65. endfunction
  66.