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

[project @ 2007-11-08 18:54:10 by jwe]
author jwe
date Thu, 08 Nov 2007 18:54:10 +0000
parents 120f3135952f
children
line wrap: on
line diff
--- a/scripts/control/system/sysscale.m	Thu Nov 08 16:36:06 2007 +0000
+++ b/scripts/control/system/sysscale.m	Thu Nov 08 18:54:10 2007 +0000
@@ -59,93 +59,98 @@
 
 function sys = sysscale (sys, outscale, inscale, outname, inname)
 
-  if( (nargin < 3) || (nargin > 5)  )
+  if (nargin < 3 || nargin > 5)
     print_usage ();
-  elseif (!isstruct(sys))
-    error("sys must be a structured system");
+  elseif (! isstruct (sys))
+    error ("sys must be a structured system");
   endif
 
-  [nn,nz,mm,pp] = sysdimensions(sys);
+  [nn, nz, mm, pp] = sysdimensions (sys);
 
   ## check for omitted scales
-  if(isempty(outscale))    outscale = eye(pp);     endif
-  if(isempty(inscale))     inscale = eye(mm);      endif
+  if (isempty (outscale))
+    outscale = eye (pp);
+  endif
+  if (isempty (inscale))
+    inscale = eye (mm);
+  endif
 
   ## check dimensions of scaling matrices
-  if(mm!=rows(inscale))
-    error("inscale(%dx%d) should have %d rows(# system inputs)", ...
-      rows(inscale),columns(inscale),mm);
-  elseif( pp != columns(outscale) )
-    error("outscale(%dx%d) should have %d columns(# system outputs)", ...
-      rows(outscale), columns(outscale),pp);
+  if (mm != rows (inscale))
+    error ("inscale(%dx%d) should have %d rows(# system inputs)",
+	   rows (inscale), columns (inscale), mm);
+  elseif (pp != columns (outscale) )
+    error ("outscale(%dx%d) should have %d columns(# system outputs)",
+	   rows (outscale), columns (outscale), pp);
   endif
 
-  sysyd = sysgetsignals(sys,"yd");
-  outc = find(sysyd==0);
-  outd = find(sysyd==1);
+  sysyd = sysgetsignals (sys, "yd");
+  outc = find (sysyd == 0);
+  outd = find (sysyd == 1);
 
-  if(length(outc) & length(outd))
+  if (length (outc) > 0 && length (outd) > 0)
     for ii = 1:rows(outscale)
-      nci = norm(outscale(ii,outc));
-      ndi = norm(outscale(ii,outd));
+      nci = norm (outscale (ii, outc));
+      ndi = norm (outscale (ii, outd));
 
-      if( nci & ndi)
-        warning("sysscale: outscale(%d,:) sums continuous and discrete outputs; setting output to cont",ii)
+      if (nci > 0 && ndi > 0)
+        warning ("sysscale: outscale(%d,:) sums continuous and discrete outputs; setting output to cont",
+		 ii)
         sysyd(ii) = 0;
       else
         sysyd(ii) = (ndi != 0);
       endif
     endfor
   else
-    sysyd = ones(1,rows(outscale))*( length(outd) > 0);
+    sysyd = ones (1, rows (outscale)) * (length(outd) > 0);
   endif
 
   ## check for SISO system type
-  if strcmp(sysgettype(sys),"tf")
-    [num,den,tsam,innam,outnam] = sys2tf(sys);
+  if (strcmp (sysgettype (sys), "tf"))
+    [num, den, tsam, innam, outnam] = sys2tf (sys);
     num = num*inscale*outscale;
-    sys = tf(num,den,tsam,innam,outnam);
-    return
-  elseif strcmp(sysgettype(sys),"zp")
-    [zer,pol,kk,tsam,innam,outnam] = sys2zp(sys);
+    sys = tf (num, den, tsam, innam, outnam);
+    return;
+  elseif (strcmp (sysgettype (sys), "zp"))
+    [zer, pol, kk, tsam, innam, outnam] = sys2zp (sys);
     kk = kk*inscale*outscale;
-    sys = zp(zer,pol,k,tsam,innam,outnam);
-    return
+    sys = zp (zer, pol, k, tsam, innam, outnam);
+    return;
   endif
 
   ## it's a state space system...
 
-  [sysa,sysb,sysc,sysd,systsam, ...
-    sysn,sysnz,sysstname,sysinname,sysoutname,oldyd] = sys2ss(sys);
+  [sysa, sysb, sysc, sysd, systsam, ...
+   sysn, sysnz, sysstname, sysinname, sysoutname, oldyd] = sys2ss(sys);
 
   sysb = sysb*inscale;
   sysc = outscale*sysc;
   sysd = outscale*sysd*inscale;
 
-  if( !issquare(outscale) )
+  if (! issquare (outscale))
     ## strip extra output names (if any)
-    sysoutname = sysoutname(1:min(rows(outscale),columns(outscale)));
-    if( nargin < 4)
-      warning("sysscale: outscale not square, outname not specified");
-      warning("sysscale:  using default output names");
-      outname = __sysdefioname__(rows(sysc),"y");
+    sysoutname = sysoutname(1:min(rows(outscale), columns(outscale)));
+    if (nargin < 4)
+      warning ("sysscale: outscale not square, outname not specified");
+      warning ("sysscale:  using default output names");
+      outname = __sysdefioname__ (rows (sysc), "y");
     endif
   else
     outname = sysoutname;
   endif
-  if( !issquare(inscale) )
+  if (! issquare (inscale))
     ## strip extra output names (if any)
-    sysinname = sysinname(1:min(rows(inscale),columns(inscale)));
-    if(nargin < 5)
-      warning("sysscale: inscale not square, inname not specified");
-      warning("sysscale:  using default input names");
-      inname = __sysdefioname__(columns(sysb),"u");
+    sysinname = sysinname(1:min(rows(inscale), columns(inscale)));
+    if (nargin < 5)
+      warning ("sysscale: inscale not square, inname not specified");
+      warning ("sysscale:  using default input names");
+      inname = __sysdefioname__ (columns (sysb), "u");
     endif
   else
-    inname = sysgetsignals(sys,"in");
+    inname = sysgetsignals (sys, "in");
   endif
 
-  sys = ss(sysa,sysb,sysc,sysd,systsam,nn,nz,sysstname, ...
-        inname,outname,find(sysyd==1));
+  sys = ss (sysa, sysb, sysc, sysd, systsam, nn, nz, sysstname,
+	    inname, outname, find (sysyd == 1));
 
 endfunction