Hi,

On Wed, Aug 29, 2012 at 10:46 PM, <josef.pktd@gmail.com> wrote:
On Wed, Aug 29, 2012 at 3:29 PM, eat <e.antero.tammi@gmail.com> wrote:
> Hi,
>
> Apparently I'm somehow misusing the functionality of  interp1d(.) or does
> following behavior imply a bug in scipy. A minimum snippet (with plots) to
> demonstrate the problem:
> In []: from scipy.interpolate import interp1d
> In []: n= 1000
> In []: x, y= randn(n), linspace(0, 1, n)
> In []: x.sort()
> In []: plot(x, y, lw= 2)
> Out[]: [<matplotlib.lines.Line2D object at 0x12E190D0>]
>
> In []: f= interp1d(x, y, 'cubic')
> In []: xi= linspace(x.min(), x.max(), n)
> In []: plot(xi, f(xi))
> Out[]: [<matplotlib.lines.Line2D object at 0x12E20830>]


I guess, some x's are too close to each other to fit a cubic
interpolation without a lot of overshooting.
Makes sense, although what are too close seems to be quite conservative:
In []: d= x[1:]- x[:-1]
In []: d.sort()
In []: d[:3]
Out[]: array([  2.09893021e-06,   2.36059137e-06,   7.52680662e-06])

Regards,
-eat

Reversing x and y looks fine.

Using the splines directly and add a small s>0 might also work.

Josef

>
> Regards,
> -eat
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
_______________________________________________
SciPy-User mailing list
SciPy-User@scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user