[SciPy-User] Cubic splines - MATLAB vs Scipy.interpolate

Charles R Harris charlesr.harris@gmail....
Tue Sep 27 18:27:02 CDT 2011


On Tue, Sep 27, 2011 at 2:27 PM, Zachary Pincus <zachary.pincus@yale.edu>wrote:

> scipy.signal has some cubic and quadratic spline functions:
> cspline1d
> cspline1d_eval
> cspline2d
>
> (and replace the c with q for the quadratic versions).
>
> I have no idea how fast they are, or if they're at all drop-in replacements
> for the matlab ones. The stuff in scipy.interpolate is powerful, but the
> fitpack spline-fitting operations can be a bit input-sensitive and prone to
> strange ringing.
>
> Zach
>
>
>
> On Sep 27, 2011, at 3:32 PM, Charles R Harris wrote:
>
> >
> >
> > On Tue, Sep 27, 2011 at 1:04 PM, Jaidev Deshpande <
> deshpande.jaidev@gmail.com> wrote:
> > Hi
> >
> > The big question: Why does the MATLAB function spline operate faster than
> the cubic spline alternatives in Scipy, especially splrep and splev ?
> >
> > ------
> >
> > The context: I'm working on an algorithm that bottlenecks on spline
> interpolation.
> >
> > Some functions in Scipy return an interpolation object function depending
> on the input data which needs to be evaluated independently over the whole
> range.
> >
> > So I used 'lower order' functions like splrep and splev. Even that was
> too slow.
> >
> > Then I tried to write my own code for cubic splines, generating and
> solving a system of 4N simultaneous equations for interpolation between N+1
> points.
> >
> > No matter what I do, the code is quite slow. How come the MATLAB function
> spline operate so fast? What am I missing? What can I do to speed it up?
> >
> >
> > I suspect it is because the scipy routines you reference are based on
> b-splines, which are needed for least squares fits. Simple cubic spline
> interpolation through a give set of points tends to be faster and I believe
> that is what the Matlab spline function does. To get b-splines in Matlab you
> need one of the toolboxes, it doesn't come with the core. I don't think
> scipy has a simple cubic spline interpolation, but I may be wrong.
> >
>

I believe the splines in signal are periodic and the boundary conditions
aren't flexible. The documentation is, um..., well, they are effectively
undocumented. We really need better spline support in scipy.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20110927/c6b07f2e/attachment.html 


More information about the SciPy-User mailing list