From: <par...@us...> - 2009-11-27 18:27:55
|
Revision: 6544 http://octave.svn.sourceforge.net/octave/?rev=6544&view=rev Author: paramaniac Date: 2009-11-27 17:57:18 +0000 (Fri, 27 Nov 2009) Log Message: ----------- control-oo: fix zero Modified Paths: -------------- trunk/octave-forge/extra/control-oo/inst/@ss/__zero__.m trunk/octave-forge/extra/control-oo/src/slab08nd.cc Modified: trunk/octave-forge/extra/control-oo/inst/@ss/__zero__.m =================================================================== --- trunk/octave-forge/extra/control-oo/inst/@ss/__zero__.m 2009-11-27 14:35:20 UTC (rev 6543) +++ trunk/octave-forge/extra/control-oo/inst/@ss/__zero__.m 2009-11-27 17:57:18 UTC (rev 6544) @@ -27,7 +27,7 @@ function [zer, gain] = __zero__ (sys) if (isempty (sys.a)) - zer = []; + zer = zeros (0, 1); else [alphar, alphai, beta] = slab08nd (sys.a, sys.b, sys.c, sys.d); zer = (alphar + i*alphai) ./ beta; @@ -35,11 +35,17 @@ lzer = length (zer); n = rows (sys.a); + m = columns (sys.b); + p = rows (sys.c); - if (lzer == n) - gain = sys.d; + 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 = sys.c * (sys.a^(n-1-lzer)) * sys.b; + gain = []; endif endfunction \ No newline at end of file Modified: trunk/octave-forge/extra/control-oo/src/slab08nd.cc =================================================================== --- trunk/octave-forge/extra/control-oo/src/slab08nd.cc 2009-11-27 14:35:20 UTC (rev 6543) +++ trunk/octave-forge/extra/control-oo/src/slab08nd.cc 2009-11-27 17:57:18 UTC (rev 6544) @@ -176,7 +176,7 @@ int ldvr = 1; double* work; - int lwork = 8*nu; + int lwork = max (1, 8*nu); vl = new double[ldvl]; vr = new double[ldvr]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |