[SciPy-User] Points fitting (non lin)

Zachary Pincus zachary.pincus@yale....
Fri Dec 14 10:50:25 CST 2012


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. Please read the documentation for splprep and splev for more information.
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 spline fitting job. You can read more about this here: 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



More information about the SciPy-User mailing list