Main Content

Interpolation with Curve Fitting Toolbox

Interpolation is a process for estimating values that lie between known data points.

Interpolation involves creating of a function that matches given data values yi at given data sites xi where f(xi) = yi, for all i.

Most interpolation methods create the interpolant f as the unique function of the formula

f(x)=jfj(x)aj,

where the form of the functions fj depends on the interpolation method.

For spline interpolation, the fj are the n consecutive B-splines Bj(x) = B(x|tj,...,tj+k), j = 1:n, of order k for a knot sequence t1 ≤ t2 ≤ ... ≤ tn + k.

About Interpolation Methods

Curve Fitting Toolbox™ supports the interpolation methods described in the following table.

Method

Description

Linear

Linear interpolation. This method fits a different linear polynomial between each pair of data points for curves, or between sets of three points for surfaces.

Nearest neighbor

Nearest neighbor interpolation. This method sets the value of an interpolated point to the value of the nearest data point.

Cubic spline

Cubic spline interpolation. This method fits a different cubic polynomial between each pair of data points for curves, or between sets of three points for surfaces.

Shape-preserving (PCHIP)

Piecewise cubic Hermite interpolation (PCHIP). This method preserves monotonicity and the shape of the data (for curves only).

Biharmonic (v4)

MATLAB® 4 griddata method. This method fits surfaces that also extrapolate well (for surfaces only).

Thin-plate spline

Thin-plate spline interpolation. This method fits smooth surfaces that also extrapolate well (for surfaces only).

Interpolant surface fits use the MATLAB function scatteredInterpolant for the linear and nearest neighbor methods, and the MATLAB function griddata for the cubic spline and biharmonic methods. The thin-plate spline method uses the tpaps function.

The interpolant method you use depends on several factors, including the characteristics of the data being fit, the required smoothness of the curve, speed considerations, and post-fit analysis requirements. The linear and nearest neighbor methods fit models efficiently, and the resulting curves are not very smooth. The cubic spline, shape-preserving, and biharmonic methods take longer to fit models, and the resulting curves are very smooth.

For example, the following plot shows a nearest neighbor interpolant fit and a shape-preserving (PCHIP) interpolant fit for the nuclear reaction data from the carbon12alpha.mat sample data set. The nearest neighbor interpolant is not as smooth as the shape-preserving interpolant.

Note

Goodness-of-fit statistics, prediction bounds, and weights are not defined for interpolants. Additionally, the fit residuals are always 0 (within computer precision) because interpolants pass through the data points.

Biharmonic interpolant fits consist of radial basis function interpolants. All other interpolants supported by Curve Fitting Toolbox are piecewise polynomials and consist of multiple polynomials defined between data points. For cubic spline and PCHIP interpolation, four coefficients describe each piece. Curve Fitting Toolbox uses a cubic (third-degree) polynomial to calculate the four coefficients. Refer to the following for more information:

  • spline for cubic spline interpolation

  • pchip for shape-preserving (PCHIP) interpolation, and for a comparison of PCHIP and cubic spline interpolation

  • scatteredInterpolant, griddata, and tpaps for surface interpolation

    It is possible to fit a single polynomial interpolant to data, with a degree one less than the number of data points. However, the behavior of such fits is unpredictable between data points. Piecewise polynomials with lower-order segments do not diverge significantly from the fitting data domain, so they are useful for analyzing a wider range of data sets.

Selecting an Interpolant Fit

Select Interpolant Fit Interactively

Open the Curve Fitter app by entering curveFitter at the MATLAB command line. Alternatively, on the Apps tab, in the Math, Statistics and Optimization group, click Curve Fitter.

On the Curve Fitter tab, in the Fit Type section, select an Interpolant fit. The app fits an interpolating curve or surface that passes through every data point.

In the Fit Options pane, you can specify the Interpolation method value.

Fit Options pane for interpolant fit

For curve data, you can set Interpolation method to Linear, Nearest neighbor, Cubic Spline, or Shape-preserving (PCHIP). For surface data, you can set Interpolation method to Nearest neighbor, Linear, Cubic Spline, Biharmonic (v4), or Thin-plate spline.

For surfaces, the Interpolant fit uses the scatteredInterpolant function for the Linear and Nearest neighbor methods, the griddata function for the Cubic Spline and Biharmonic (v4) methods, and the tpaps function for the Thin-plate spline method. Try the Thin-plate spline method when you require both smooth surface interpolation and good extrapolation properties.

Tip

If your data variables have very different scales, select and clear the Center and scale check box to see the difference in the fit. Normalizing the inputs can influence the results of the piecewise Linear and Cubic Spline interpolation, and Nearest neighbor surface interpolation methods.

Fit Linear Interpolant Model Using the fit Function

Load the census sample data set.

load census

The variables pop and cdate contain data for the population size and the year the census was taken, respectively.

You can use the fit function to fit any of the interpolant models described in Interpolant Model Names. In this case, fit a linear interpolant model using the 'linearinterp' option, and then plot the result.

f = fit(cdate,pop,'linearinterp');
plot(f,cdate,pop);

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

Compare Linear Interpolant Models

Load the carbon12alpha sample data set. Create both nearest neighbor and PCHIP interpolant fits using the 'nearestinterp' and 'pchip' options.

load carbon12alpha
f1 = fit(angle,counts,'nearestinterp');
f2 = fit(angle,counts,'pchip');

Compare the fitted curves f1 and f2 by plotting them in the same figure.

p1 = plot(f1,angle,counts);
xlim([min(angle),max(angle)])
hold on

p2 = plot(f2,'b');
hold off
legend([p1;p2],'Counts per Angle','Nearest Neighbor','PCHIP',...
    'Location','northwest')

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Counts per Angle, Nearest Neighbor, PCHIP.

See Also

Apps

Functions

Related Topics