Smoothing cubic splines are implemented with periodic conditions, so that closed curves in any dimension can be approximated. It includes a test function to demonstrate it.
Theoretical arguments supporting this implementation can be found here:
Massimo Zanetti (2019). Smoothing Cubic Splines with periodic conditions (https://www.mathworks.com/matlabcentral/fileexchange/59463-smoothing-cubic-splines-with-periodic-conditions), MATLAB Central File Exchange. Retrieved .
For versions prior to R2016b (where no implicit expansion is available), replace these two rows
d = ([c(2:end,:);c(1,:)]-c)./(3*h);
b = ([a(2:end,:);a(1,:)]-a)./h - c.*h - d.*(h.^2);
with these ones
d = bsxfun( @rdivide , [c(2:end,:);c(1,:)]-c , 3*h );
b = bsxfun( @rdivide , [a(2:end,:);a(1,:)]-a , h ) - bsxfun( @times , c , h ) - bsxfun( @times , d , h.^2 );
Really great code. Helped me very much! Thanks!
Code improved and technical note relased
Update is uploaded.
A new more documented and commented version will be rrelased soon.
Very good work
For any question, don't esitate to contact me.
MATLAB version corrected
Improved to solve the minimization problem efficiently. Released a note with theoretical development of the minimizaiton problem.
Function header contains help information. Input checks are added. More examples in test script.