# [SciPy-User] Points fitting (non lin)

Paweł Kwaśniewski pawel.kw@gmail....
Fri Dec 14 11:13:57 CST 2012

So, as far as I understand, the scipy.interpolate.UnivariateSpline()
function is equivalent to interpolate.splrep - according to the
documentation string it is just a more modern, object oriented
implementation. In practice, it means that the
scipy.interpolate.UnivariateSpline() returns a function which can be then
evaluated on the desired x axis (I actually learned this today...). In the
case of example data you gave, this would be something like this:

from scipy import interpolate
x = array((1,2,4,3))
y = array((1,2,2,1))

# Calculate the spline
f = interpolate.UnivariateSpline(x,y)

# Evaluate the spline
fx = f(x)

Paweł

2012/12/14 Zachary Pincus <zachary.pincus@yale.edu>

>
> On Dec 14, 2012, at 11:42 AM, Paolo Zaffino wrote:
>
> > Dear Paweł,
> > thank you for the reply.
> > I try to explain better the issue.
> > I have these points (in this order):
> >
> > P1 = (1,1)
> > P2 = (2,2)
> > P3 = (4,2)
> > P4 = (3,1)
> >
> > I need to fit the points in the order P1,P2,P3,P4 even if the x coord of
> P3 is greater than P4.
> > I thought to quadratic piecewise curve but other solutions are welcome.
> >
> > Thanks a lot.
> > Paolo
>
> You will want to fit a parametric spline of some degree with some amount
> (or no) smoothing. I'd look at the splprep function in scipy.interpolate.
>
> The trick is you associate each point with some monotonic parameter value,
> and then interpolate along that parameter (say t) to get your x, y
> coordinates.
>
> E.g.:
> t  x  y
> 0  1  1
> 1  2  2
> 2  4  2
> 3  3  1
>
> Then if you were interpolating linearly, at t=0.5, you would have (1.5,
> 1.5) as the coordinate.
>
> As above, splprep will generate splines of a desired order (linear,
> quadratic, cubic, etc.) and with a user-specified smoothing parameter (s),
> which can be set to zero to get exact interpolation of the input
> coordinates, potentially at the cost of ringing (sometimes quite bad) away
> from the input coordinate. So you will need to plot the interpolated
> values, both at the input t-values, as well as at intermediate t's, to see
> if the output is sane.
>
> Hopefully this is somewhat clear, or at least enough to get you started.
> Zach
>
>
>
> >
> > Da: Paweł Kwaśniewski <pawel.kw@gmail.com>
> > A: Paolo Zaffino <p.zaffino@yahoo.it>; SciPy Users List <
> scipy-user@scipy.org>
> > Inviato: Venerdì 14 Dicembre 2012 17:25
> > Oggetto: Re: [SciPy-User] Points fitting (non lin)
> >
> > Dear Paolo,
> >
> > I'm not sure I understand correctly your problem, but this sounds like a
> http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html
> >
> > Is this what you are looking for?
> >
> > Cheers,
> >
> > Paweł
> >
> >
> >
> > 2012/12/14 Paolo Zaffino <p.zaffino@yahoo.it>
> > Dear Scipy community,
> >
> > I have a set of points (2D) and I would compute a curve that fits them.
> > The points are ordered in a precise way (not crescent order) and I can't
> change this order (the curve should fit the points in that order).
> > I'm interseting in a non linear fit (the ideal case would be more
> intervals of quadratic curves).
> > Has anyone any advice about?
> >
> > Thank you very much.
> > Regards.
> > Paolo
> >
> > _______________________________________________
> > 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
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20121214/2a2a06e3/attachment.html