[SciPy-User] Splines in scipy.signal vs scipy.interpolation

denis denis-bz-gg at t-online.de
Wed Feb 10 12:38:14 EST 2010


On Feb 9, 6:05 pm, Zachary Pincus <zachary.pin... at yale.edu> wrote:

>
> I had always thought that the splines produced by fitpack were plain  
> (and local) non-uniform B-splines (as opposed to the uniform kind,  
> which Denis's really helpful demo code uses). However, the way that  
> those B-splines are fit to the given data by fitpack is definitely  
> global and can lead to odd artifacts if you're incautious.
>
> Is this correct?
>
> Then is reason that the B-splines from scipy.interpolate.fitpack and  
> from scipy.signal are a bit different is that the latter are also  
> strictly uniform? (E.g. evenly-spaced knot vector.) Probably this is  
> easy to test...

Zach,
  if UnivariateSpline were local, its response to 0 0 1 0 0 1000
should be 0 0 1 0 ...
i.e. shouldn't see the 1000, right ?  Doesn't look so --

""" is scipy UnivariateSpline local ?  1 0 0 1000 """
from __future__ import division
import numpy as np
from scipy.interpolate import UnivariateSpline  # fitpack
import pylab as pl

N = 10
H = 10
NH = N * H
N2 = N//2
x = np.arange(N+1)
y = np.zeros(N+1);  y[N2] = 1;  y[N2+3] = 1000
xup = np.arange( 0, N, 1/H )  # N * H
np.set_printoptions( 1, threshold=100, edgeitems=3*H, suppress=True )
# .1f

#..............................................................................
title = __doc__
interpolator = UnivariateSpline( x, y, k=3, s=0 )  # s=0 interpolates
yup = interpolator( xup )
print "yup:", yup[N2*H - 1 : (N2+3)*H]

pl.title( title )
pl.plot( xup, yup )
ax = pl.gca()
ax.set_xlim( N2 - 1, N2 + 5 )
ax.set_ylim( -10, 10 )
pl.show()

The real problem imho is that the doc doesn't say
"we have more software, with less doc, than at any time in history"

cheers
  -- denis



More information about the SciPy-User mailing list