diff scripts/control/system/sysgroup.m @ 7135:8aa770b6c5bf

[project @ 2007-11-08 18:54:10 by jwe]
author jwe
date Thu, 08 Nov 2007 18:54:10 +0000
parents a1dbe9d80eee
children
line wrap: on
line diff
--- a/scripts/control/system/sysgroup.m
+++ b/scripts/control/system/sysgroup.m
@@ -59,118 +59,118 @@
 
 function sys = sysgroup (varargin)
 
-  if(nargin < 1)
+  if (nargin < 1)
     print_usage ();
   endif
 
   ## collect all arguments
   arglist = {};
-  for kk=1:nargin
+  for kk = 1:nargin
     arglist(kk) = varargin{kk};
-    if(!isstruct(arglist{kk}))
-	error("sysgroup: argument %d is not a data structure",kk);
+    if (! isstruct (arglist{kk}))
+      error ("sysgroup: argument %d is not a data structure", kk);
     endif
   endfor
 
-  if(nargin == 2)
+  if (nargin == 2)
     ## the usual case; group the two systems together
     Asys = arglist{1};
     Bsys = arglist{2};
 
     ## extract information from Asys, Bsys to consruct sys
-    Asys = sysupdate(Asys,"ss");
-    Bsys = sysupdate(Bsys,"ss");
-    [n1,nz1,m1,p1] = sysdimensions(Asys);
-    [n2,nz2,m2,p2] = sysdimensions(Bsys);
-    [Aa,Ab,Ac,Ad,Atsam,An,Anz,Ast,Ain,Aout,Ayd] = sys2ss(Asys);
-    [Ba,Bb,Bc,Bd,Btsam,Bn,Bnz,Bst,Bin,Bout,Byd] = sys2ss(Bsys);
+    Asys = sysupdate (Asys, "ss");
+    Bsys = sysupdate (Bsys, "ss");
+    [n1, nz1, m1, p1] = sysdimensions (Asys);
+    [n2, nz2, m2, p2] = sysdimensions (Bsys);
+    [Aa, Ab, Ac, Ad, Atsam, An, Anz, Ast, Ain, Aout, Ayd] = sys2ss (Asys);
+    [Ba, Bb, Bc, Bd, Btsam, Bn, Bnz, Bst, Bin, Bout, Byd] = sys2ss (Bsys);
     nA = An + Anz;
     nB = Bn + Bnz;
 
-    if(p1*m1*p2*m2 == 0)
-	error("sysgroup: argument lacks inputs and/or outputs");
+    if (p1*m1*p2*m2 == 0)
+      error ("sysgroup: argument lacks inputs and/or outputs");
 
-    elseif((Atsam + Btsam > 0) & (Atsam * Btsam == 0) )
-	warning("sysgroup: creating combination of continuous and discrete systems")
+    elseif (Atsam + Btsam > 0 && Atsam * Btsam == 0)
+      warning ("sysgroup: creating combination of continuous and discrete systems")
 
-    elseif(Atsam != Btsam)
-	error("sysgroup: Asys.tsam=%e, Bsys.tsam =%e", Atsam, Btsam);
+    elseif (Atsam != Btsam)
+      error ("sysgroup: Asys.tsam=%e, Bsys.tsam =%e", Atsam, Btsam);
     endif
 
-    if(nA*nB > 0)
-      A12 = zeros(nA,nB);
+    if (nA*nB > 0)
+      A12 = zeros (nA, nB);
     else
       A12 = [];
     endif
-    A = [Aa,A12; A12', Ba];
+    A = [Aa, A12; A12', Ba];
 
-    if(nA*m2 > 0)
-      B12 = zeros(nA,m2);
+    if (nA*m2 > 0)
+      B12 = zeros (nA, m2);
     else
       B12 = [];
     endif
-    if(nB*m1 > 0)
-      B21 = zeros(nB,m1);
+    if (nB*m1 > 0)
+      B21 = zeros (nB, m1);
     else
       B21 = [];
     endif
-    if(isempty(Ab))
+    if (isempty(Ab))
       Ab = [];
     endif
-    if(isempty(Bb))
+    if (isempty (Bb))
       Bb = [];
     endif
     B = [Ab, B12; B21, Bb];
 
-    if(p1*nB > 0)
-      C12 = zeros(p1,nB);
+    if (p1*nB > 0)
+      C12 = zeros (p1, nB);
     else
       C12 = [];
     endif
-    if(p2*nA > 0)
-      C21 = zeros(p2,nA);
+    if (p2*nA > 0)
+      C21 = zeros (p2, nA);
     else
       C21 = [];
     endif
-    C = [Ac, C12; C21,Bc];
+    C = [Ac, C12; C21, Bc];
 
-    if(p1*m2 > 0)
-      D12 = zeros(p1,m2);
+    if (p1*m2 > 0)
+      D12 = zeros (p1, m2);
     else
       D12 = [];
     endif
-    if(p2*m1 > 0)
-      D21 = zeros(p2,m1);
+    if (p2*m1 > 0)
+      D21 = zeros (p2, m1);
     else
       D21 = [];
     endif
     D = [Ad, D12; D21, Bd];
-    tsam = max(Atsam,Btsam);
+    tsam = max (Atsam, Btsam);
 
     ## construct combined signal names; stnames must check for pure gain blocks
-    if(isempty(Ast))
-	stname = Bst;
-    elseif(isempty(Bst))
-	stname = Ast;
+    if (isempty (Ast))
+      stname = Bst;
+    elseif (isempty (Bst))
+      stname = Ast;
     else
-      stname= __sysconcat__(Ast,Bst);
+      stname= __sysconcat__ (Ast, Bst);
     endif
-    inname = __sysconcat__(Ain,Bin);
-    outname = __sysconcat__(Aout,Bout);
+    inname = __sysconcat__ (Ain, Bin);
+    outname = __sysconcat__ (Aout, Bout);
 
     ## Sort states into continuous first, then discrete
-    dstates = ones(1,(nA+nB));
-    if(An)
-	dstates(1:(An)) = zeros(1,An);
+    dstates = ones (1, (nA+nB));
+    if (An)
+      dstates(1:(An)) = zeros (1, An);
     endif
-    if(Bn)
-	dstates((nA+1):(nA+Bn)) = zeros(1,Bn);
+    if (Bn)
+      dstates((nA+1):(nA+Bn)) = zeros (1, Bn);
     endif
-    [tmp,pv] = sort(dstates);
+    [tmp, pv] = sort (dstates);
     A = A(pv,pv);
     B = B(pv,:);
     C = C(:,pv);
-    stname = stname(pv);
+    stname = stname (pv);
 
     ## check for duplicate signal names
     inname = __sysgroupn__ (inname, "input");
@@ -178,17 +178,17 @@
     outname = __sysgroupn__ (outname, "output");
 
     ## mark discrete outputs
-    outlist = find([Ayd, Byd]);
+    outlist = find ([Ayd, Byd]);
 
     ## build new system
-    sys = ss(A,B,C,D,tsam,An+Bn,Anz+Bnz,stname,inname,outname);
+    sys = ss (A, B, C, D, tsam, An+Bn, Anz+Bnz, stname, inname, outname);
 
   else
     ## multiple systems (or a single system); combine together one by one
     sys = arglist{1};
-    for kk=2:length(arglist)
-	printf("sysgroup: kk=%d\n",kk);
-	sys = sysgroup(sys,arglist{kk});
+    for kk = 2:length(arglist)
+      printf ("sysgroup: kk=%d\n", kk);
+      sys = sysgroup (sys, arglist{kk});
     endfor
   endif