From: <par...@us...> - 2009-10-23 20:50:39
|
Revision: 6369 http://octave.svn.sourceforge.net/octave/?rev=6369&view=rev Author: paramaniac Date: 2009-10-23 20:50:26 +0000 (Fri, 23 Oct 2009) Log Message: ----------- control-oo: fix bug in minreal Modified Paths: -------------- trunk/octave-forge/extra/control-oo/inst/@tf/__minreal__.m Modified: trunk/octave-forge/extra/control-oo/inst/@tf/__minreal__.m =================================================================== --- trunk/octave-forge/extra/control-oo/inst/@tf/__minreal__.m 2009-10-23 20:27:32 UTC (rev 6368) +++ trunk/octave-forge/extra/control-oo/inst/@tf/__minreal__.m 2009-10-23 20:50:26 UTC (rev 6369) @@ -42,7 +42,11 @@ [jnk, idx] = min (abs (zer(k) - pol)); # find best match if (tol == "def") - t = 10 * abs (zer(k)) * sqrt_eps; + if (abs (zer(k)) < sqrt_eps) # catch case zer(k) = 0 + t = 1000 * eps; + else + t = 1000 * abs (zer(k)) * sqrt_eps; + endif else t = tol; endif @@ -53,16 +57,17 @@ endif endfor - num = gain * poly (zer); - den = poly (pol); + num = real (gain * poly (zer)); + den = real (poly (pol)); num_idx = find (abs (num) < sqrt_eps); # suppress numerical noise den_idx = find (abs (den) < sqrt_eps); # in polynomial coefficients + num(num_idx) = 0; den(den_idx) = 0; - sys.num{p, m} = tfpoly (num); - sys.den{p, m} = tfpoly (den); + sys.num{ny, nu} = tfpoly (num); + sys.den{ny, nu} = tfpoly (den); endfor endfor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |