image thumbnail

fitSplineToData

version 1.1.0.0 (11.1 KB) by Matthew Kelly
Fit a cubic spline to a data set by solving a QP, with option to constrain boundary conditions.

120 Downloads

Updated 17 Aug 2017

View License

% soln = fitSplineToData(problem)
%
% Fit a cubic spline to a data set. The user can specify boundary
% constraints on the value, slope, and curvature along each dimension.
% The spline is computed using a quadratic program, minimizing the fitting
% error between the spline and the data set, as well as minimizing the
% integral of the jerk-squared along the spline.
%
% This function can be used to compute smooth first and second derivatives
% of a noisy data set, since it returns splines for the slope and curvature
% as well as the value of the data.
%
% INPUTS:
% problem.tData = [1, nData] = time-stamps for data
% problem.xData = [nState, nData] = time-stamps for data
% problem.xLow = [nState, 1] or [] = initial position
% problem.xUpp = [nState, 1] or [] = final position
% problem.vLow = [nState, 1] or [] = initial velocity
% problem.vUpp = [nState, 1] or [] = final velocity
% problem.aLow = [nState, 1] or [] = initial acceleration
% problem.aUpp = [nState, 1] or [] = final acceleration
% problem.smoothing = weight on jerk-squared objective function
% problem.tKnot = [nKnot, 1] = knot times for spline
%
% OUTPUTS:
% soln.pp.x = Matlab pp-spline for the position
% soln.pp.v = Matlab pp-spline for the velocity
% soln.pp.a = Matlab pp-spline for the acceleration
% soln.grid.t = problem.tData = time-grid from original data set
% soln.grid.x = [nState, nData] = position at times grid.t
% soln.grid.v = [nState, nData] = velocity at times grid.t
% soln.grid.a = [nState, nData] = acceleration at times grid.t
%
% NOTES:
% x == position == value of the spline or data
% v == velocity == slope of the spline or data
% a == acceleration == curvature of the spline or data
%

Cite As

Matthew Kelly (2021). fitSplineToData (https://www.mathworks.com/matlabcentral/fileexchange/64119-fitsplinetodata), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2015b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!