Fitting smooth closed spline to scattered 2D points
Show older comments
Hi everyone,
I have a set of points scattered in a 2D plane. The points are scattered in a somwhat circular/elipptical way, but I would like to fit some arbitrarily (but smoothed) shaped spline. The points are distributed like:

To enable closing of a spline, the last and first data points are the same.
As said I would like to fit a closed smoothed spline to this curve. I've tried the cscvn-option giving me the below, but I would like something a bit more smoothened out (cscvn forces the spline to go exactly through each and every point):

Reading up in the help, csaps seem to enable smoothing (to be fair, I'm not really sure how), but if trying this on my data I get a smoothed non-closed curve like below:

The last option I've looked at is creating a new parameter to which I fit both my (x,y)-data (as suggested in an earlier thread: http://www.mathworks.com/matlabcentral/newsreader/view_thread/33868 ), but this actually gives me an even more jagged curve:

However I might be applying the parametrization in an incorrect way...
So, to my question. Does anyone have a good way of creating a closed smoothed spline to my data? Any suggestion or help would be very much appreciated. (P.S: I'm trying to create an automatized code, so I'm preferably looking for executable code than GUI in the curve fitting toolbox (but I understand that they are somewhat connected...)).
Thanks for the help!
/David
Accepted Answer
More Answers (1)
Praful Agrawal
on 29 Sep 2018
1 vote
the original task can be achieved by converting the piecewise polynomial fit to bspline fit using fn2fm function:
X - set of points
pp = cscvn(X); bsp = fn2fm(pp, 'B-');
Categories
Find more on Spline Postprocessing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!