File Exchange

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.

1 Download

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
%

Comments and Ratings (0)

Updates

1.1.0.0

Added photo

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