Ticket #581: chebwin_patch.diff

File chebwin_patch.diff, 1.4 KB (added by akumar, 4 years ago)

chebwin fix: patch applies to SVN HEAD

  • scipy/signal/signaltools.py

    diff -urN python-scipy-0.6.0.orig/scipy/signal/signaltools.py python-scipy-0.6.0/scipy/signal/signaltools.py
    old new  
    855855        M = M+1 
    856856 
    857857    # compute the parameter beta 
    858     beta = cosh(1.0/(M-1.0)*arccosh(10**(at/20.))) 
     858    beta = cosh(1.0/(M-1.0)*arccosh(10**(abs(at)/20.))) 
    859859    k = r_[0:M]*1.0 
    860860    x = beta*cos(pi*k/M) 
    861     #find the window's DFT coefficients 
    862     p = zeros(x.shape) * 1.0 
    863     for i in range(len(x)): 
    864         if x[i] < 1: 
    865             p[i] = cos((M - 1) * arccos(x[i])) 
    866         else: 
    867             p[i] = cosh((M - 1) * arccosh(x[i])) 
    868  
     861    # find the window's DFT coefficients 
     862    # using the Chebyshev polynomial 
     863    p = polyval(special.chebyt(M - 1), x) 
    869864    # Appropriate IDFT and filling up 
    870865    # depending on even/odd M 
    871866    if M % 2: 
    872         w = real(fft(p)); 
     867        w = real(fft(p * 1.0)); 
    873868        n = (M + 1) / 2; 
    874869        w = w[:n] / w[0]; 
    875         w = concatenate((w[n - 1:0:-1], w)) 
     870        w = numpy.core.concatenate((w[n - 1:0:-1], w)) 
    876871    else: 
    877872        p = p * exp(1.j*pi / M * r_[0:M]) 
    878873        w = real(fft(p)); 
    879874        n = M / 2 + 1; 
    880875        w = w / w[1]; 
    881         w = concatenate((w[n - 1:0:-1], w[1:n])); 
     876        w = numpy.core.concatenate((w[n - 1:0:-1], w[1:n])); 
    882877    if not sym and not odd: 
    883878        w = w[:-1] 
    884879    return w