From: <par...@us...> - 2010-09-08 16:14:46
|
Revision: 7686 http://octave.svn.sourceforge.net/octave/?rev=7686&view=rev Author: paramaniac Date: 2010-09-08 16:14:40 +0000 (Wed, 08 Sep 2010) Log Message: ----------- control: assemble complex vector 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-08 10:05:43 UTC (rev 7685) +++ trunk/octave-forge/main/control/inst/@ss/__zero__.m 2010-09-08 16:14:40 UTC (rev 7686) @@ -1,4 +1,4 @@ -## Copyright (C) 2009 Lukas F. Reichlin +## Copyright (C) 2009 - 2010 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -22,16 +22,11 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: October 2009 -## Version: 0.1 +## Version: 0.2 function [zer, gain] = __zero__ (sys) - if (isempty (sys.a)) - zer = zeros (0, 1); - else - [alphar, alphai, beta] = slab08nd (sys.a, sys.b, sys.c, sys.d); - zer = (alphar + i*alphai) ./ beta; - endif + zer = slab08nd (sys.a, sys.b, sys.c, sys.d); lzer = length (zer); n = rows (sys.a); Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2010-09-08 10:05:43 UTC (rev 7685) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2010-09-08 16:14:40 UTC (rev 7686) @@ -23,13 +23,14 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.3 +Version: 0.4 */ #include <octave/oct.h> #include <f77-fcn.h> #include "common.cc" +#include <complex> extern "C" { @@ -118,7 +119,7 @@ int info; // tolerance - double tol = 2.2204e-16; // TODO: use LAPACK dlamch + double tol = 0; // AB08ND uses DLAMCH for default tolerance // SLICOT routine AB08ND F77_XFCN (ab08nd, AB08ND, @@ -179,11 +180,21 @@ if (info2 != 0) error ("ss: zero: slab08nd: DGGEV returned info = %d", info2); - + + // assemble complex vector - adapted from DEFUN complex in data.cc + ColumnVector zeror (nu); + ColumnVector zeroi (nu); + + zeror = quotient (alphar, beta); + zeroi = quotient (alphai, beta); + + ComplexColumnVector zero (nu, Complex ()); + + for (octave_idx_type i = 0; i < nu; i++) + zero.xelem (i) = Complex (zeror(i), zeroi(i)); + // return values - retval(0) = alphar; - retval(1) = alphai; - retval(2) = beta; + retval(0) = zero; } return retval; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |