levinson.m incompatibility

Eric Chassande-Mottin echassandemottin at gmail.com
Mon Feb 25 05:02:10 CST 2008


levinson(rand(10,1),9) leads to an undetermined error with GNU Octave.
here is a patch to levinson.m (Octave forge 1.0.6) that solves this problem.

eric.
---------------------------------------------------------------------------------------------------

diff -c old/levinson.m new/levinson.m

*** old/levinson.m	2008-02-25 11:50:44.000000000 +0100
--- new/levinson.m	2008-02-25 11:52:04.000000000 +0100
*** 59,71 ****

  function [a, v, ref] = levinson (acf, p)
  if ( nargin<1 )
!   error( 'usage: [a,v,ref]=levinson(acf,p)\n', 1);
  elseif( ~isvector(acf) || length(acf)<2 )
!   error( 'levinson: arg 1 (acf) must be vector of length >1\n', 1);
! elseif ( nargin>1 && ( ~isscalar(p) || fix(p)~=p || p>length(acf)-2 ) )
!   error( 'aryule: arg 2 (p) must be integer >0 and <length(acf)-1\n', 1);
  else
!   if (nargin == 1) p = length(acf) - 1; endif
    if( columns(acf)>1 ) acf=acf(:); endif      # force a column vector

    if nargout < 3 && p < 100
--- 58,70 ----

  function [a, v, ref] = levinson (acf, p)
  if ( nargin<1 )
!   error("usage: [a,v,ref]=levinson(acf,p)");
  elseif( ~isvector(acf) || length(acf)<2 )
!   error("levinson: arg 1 (acf) must be vector of length >1");
! elseif ( nargin>1 && ( ~isscalar(p) || fix(p)~=p ) )
!   error("levinson: arg 2 (p) must be integer >0");
  else
!   if (nargin == 1)| (p>=length(acf)) p = length(acf) - 1; endif
    if( columns(acf)>1 ) acf=acf(:); endif      # force a column vector


More information about the Bug-octave mailing list