changeset 6919:e45e921fbee2

[project @ 2007-09-21 16:01:15 by jwe]
author jwe
date Fri, 21 Sep 2007 16:01:16 +0000
parents dcd384e73cbe
children 17d9ce1f00f5
files scripts/ChangeLog scripts/control/hinf/h2norm.m
diffstat 2 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Fri Sep 21 12:30:34 2007 +0000
+++ b/scripts/ChangeLog	Fri Sep 21 16:01:16 2007 +0000
@@ -1,3 +1,7 @@
+2007-09-21  Luther Tychonievich  <lty@cs.byu.edu>
+
+	* control/hinf/h2norm: Compute d*d', not d'*d.
+
 2007-09-21  Thomas Weber  <thomas.weber.mail@gmail.com>
 
 	* statistics/distributions/Makefile.in (SOURCES): Add unidcdf.m,
--- a/scripts/control/hinf/h2norm.m	Fri Sep 21 12:30:34 2007 +0000
+++ b/scripts/control/hinf/h2norm.m	Fri Sep 21 16:01:16 2007 +0000
@@ -49,28 +49,29 @@
 
 function h2gain = h2norm (sys)
 
-  if((nargin != 1))
+  if (nargin != 1)
     print_usage ();
-  elseif(!isstruct(sys))
-    error("Sys must be in system data structure");
+  elseif (! isstruct (sys))
+    error ("Sys must be in system data structure");
   end
-  dflg = is_digital(sys);
+  dflg = is_digital (sys);
 
-  if(!is_stable(sys))
-    warning("h2norm: unstable input system; returning Inf");
+  if (! is_stable (sys))
+    warning ("h2norm: unstable input system; returning Inf");
     h2gain = Inf;
   else
     ## compute gain
-    [a,b,c,d] = sys2ss(sys);
-    if(dflg)
-      M = dlyap(a,b*b');
+    [a, b, c, d] = sys2ss (sys);
+    if (dflg)
+      M = dlyap (a, b*b');
     else
-      M = lyap (a,b*b');
+      M = lyap (a, b*b');
     endif
-    if( min(real(eig(M))) < 0)
-      error("h2norm: gramian not >= 0 (lightly damped modes?)")
+    if (min (real (eig (M))) < 0)
+      error ("h2norm: gramian not >= 0 (lightly damped modes?)")
     endif
 
-    h2gain = sqrt(trace(d'*d + c*M*c'));
+    h2gain = sqrt (trace (d*d' + c*M*c'));
   endif
+
 endfunction