From: <par...@us...> - 2010-09-09 20:00:29
|
Revision: 7695 http://octave.svn.sourceforge.net/octave/?rev=7695&view=rev Author: paramaniac Date: 2010-09-09 20:00:23 +0000 (Thu, 09 Sep 2010) Log Message: ----------- control: calculate gain of state-space models inside oct-file Modified Paths: -------------- trunk/octave-forge/main/control/inst/@ss/__zero__.m trunk/octave-forge/main/control/src/slab08nd.cc Modified: trunk/octave-forge/main/control/inst/@ss/__zero__.m =================================================================== --- trunk/octave-forge/main/control/inst/@ss/__zero__.m 2010-09-09 19:01:41 UTC (rev 7694) +++ trunk/octave-forge/main/control/inst/@ss/__zero__.m 2010-09-09 20:00:23 UTC (rev 7695) @@ -26,21 +26,6 @@ function [zer, gain] = __zero__ (sys) - zer = slab08nd (sys.a, sys.b, sys.c, sys.d); + [zer, gain] = slab08nd (sys.a, sys.b, sys.c, sys.d); - lzer = length (zer); - n = rows (sys.a); - m = columns (sys.b); - p = rows (sys.c); - - if (m == 1 && p == 1) - if (lzer == n) - gain = sys.d; - else - gain = sys.c * (sys.a^(n-1-lzer)) * sys.b; - endif - else - gain = []; - endif - endfunction \ No newline at end of file Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2010-09-09 19:01:41 UTC (rev 7694) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2010-09-09 20:00:23 UTC (rev 7695) @@ -31,6 +31,7 @@ #include <f77-fcn.h> #include "common.cc" #include <complex> +#include <xpow.h> extern "C" { @@ -181,6 +182,21 @@ if (info2 != 0) error ("ss: zero: slab08nd: DGGEV returned info = %d", info2); + // calculate gain + octave_value gain; + + if (m == 1 && p == 1) + { + if (nu == n) + gain = d; + else + gain = c * xpow (a, double (n-1-nu)) * b; + } + else + { + gain = Matrix (0, 0); + } + // assemble complex vector - adapted from DEFUN complex in data.cc ColumnVector zeror (nu); ColumnVector zeroi (nu); @@ -195,6 +211,7 @@ // return values retval(0) = zero; + retval(1) = gain; } return retval; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |