Hi Carnë,
Looking into it some more, I found that even setting small values in the output polynomials to zero is an error. We need to remove lines like this: b_out(abs(b_out)<tol) = 0; a_out(abs(a_out)<tol) = 0; The reason is that the tolerance applies to the positions of the poles, but not necessarily to the coefficients of the z and s-domain polynomials. This becomes a problem for relatively high sample rates in impinvar() and low sample rates in invimpinvar(). As an example, take octave:1> [b a]=impinvar([1], [1, 2, 1], 100) b = 0 0 a = 1.00000 -1.98010 0.98020 Note how the coefficients of b are rounded to zero. The correct result, taking out the offending lines, is octave:1> [b a]=impinvar([1], [1, 2, 1], 100) b = 0.0000e+00 9.9005e-05 a = 1.00000 -1.98010 0.98020 which is also what Matlab gives. Attached are the updated files, along with a patch file to the current svn revision. I have also updated the test cases to catch these type of issues in the future. Thanks, Rudy.
impinvar101211.tar.gz
Description: GNU Zip compressed data
------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev