diff -urN python-scipy-0.6.0.orig/scipy/signal/signaltools.py python-scipy-0.6.0/scipy/signal/signaltools.py
|
old
|
new
|
|
| 855 | 855 | M = M+1 |
| 856 | 856 | |
| 857 | 857 | # 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.))) |
| 859 | 859 | k = r_[0:M]*1.0 |
| 860 | 860 | 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) |
| 869 | 864 | # Appropriate IDFT and filling up |
| 870 | 865 | # depending on even/odd M |
| 871 | 866 | if M % 2: |
| 872 | | w = real(fft(p)); |
| | 867 | w = real(fft(p * 1.0)); |
| 873 | 868 | n = (M + 1) / 2; |
| 874 | 869 | 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)) |
| 876 | 871 | else: |
| 877 | 872 | p = p * exp(1.j*pi / M * r_[0:M]) |
| 878 | 873 | w = real(fft(p)); |
| 879 | 874 | n = M / 2 + 1; |
| 880 | 875 | 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])); |
| 882 | 877 | if not sym and not odd: |
| 883 | 878 | w = w[:-1] |
| 884 | 879 | return w |