Skip to Main Content Skip to Search
Product Documentation

Interpolants

Interpolation Methods

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

Interpolant Methods

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. Therefore, this method does not generate any new data points.

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

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

For curves only.

Biharmonic (v4)

MATLAB 4 griddata method.

For surfaces only.

The type of interpolant to use depends on the characteristics of the data being fit, the required smoothness of the curve, speed considerations, post-fit analysis requirements, and so on. The linear and nearest neighbor methods are fast, but the resulting curves are not very smooth. The cubic spline and shape-preserving and v4 methods are slower, but the resulting curves are very smooth.

For example, the nuclear reaction data from the carbon12alpha.mat file is shown here with a nearest neighbor interpolant fit and a shape-preserving (PCHIP) interpolant fit. Clearly, the nearest neighbor interpolant does not follow the data as well as the shape-preserving interpolant. The difference between these two fits can be important if you are interpolating. However, if you want to integrate the data to get a sense of the total strength of the reaction, then both fits provide nearly identical answers for reasonable integration bin widths.

Interpolants are defined as piecewise polynomials because the fitted curve is constructed from many "pieces" (except for Biharmonic for surfaces which is a radial basis function interpolant). For cubic spline and PCHIP interpolation, each piece is described by four coefficients, which the toolbox calculates using a cubic (third-degree) polynomial.

It is possible to fit a single "global" polynomial interpolant to data, with a degree one less than the number of data points. However, such a fit can have wildly erratic behavior between data points. In contrast, the piecewise polynomials described here always produce a well-behaved fit, so they are more flexible than parametric polynomials and can be effectively used for a wider range of data sets.

Selecting an Interpolant Fit Interactively

In the Curve Fitting Tool, select Interpolant from the model type list.

The Interpolant fit category fits an interpolating curve or surface that passes through every data point. For surfaces, this fit type uses the MATLAB griddata function. The settings are shown here.

You can specify the Method setting: Nearest neighbor, Linear, Cubic, Shape-preserving (PCHIP) (for curves) or Biharmonic (v4) (for surfaces). For details, see Interpolation Methods.

Selecting an Interpolant Fit at the Command Line

Specify the interpolant model method when you call the fit function using one of these options.

Fitting Method

Description

'nearestinterp'

Nearest neighbor interpolation

'linearinterp'

Linear interpolation

'cubicinterp'

Cubic spline interpolation

'pchipinterp'

Piecewise cubic Hermite interpolation (curves only)

'biharmonicinterp'

Biharmonic (MATLAB 4 griddata) interpolation (surfaces only)

There are no additional fit option parameters for any of the interpolant methods.

For example, to load some data and fit a linear interpolant model:

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

To create and compare nearest neighbor and pchip interpolant fits on a plot:

load carbon12alpha
f1 = fit(angle, counts, 'nearestinterp')
f2 = fit(angle, counts, 'pchip')
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', 'pchip')

For an alternative to 'cubicinterp' or 'pchipinterp', you can use other spline functions that allow greater control over what you can create. See About Splines in Curve Fitting Toolbox.

  


 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS