Main Content

Extrapolation for Interpolant Fit Types

Extrapolation is a process for estimating dependent variable values for independent variable values outside of the fitting data domain. Many different methods perform extrapolation. Given fitting data X for the independent variables and Y for the dependent variable, an extrapolation method creates a function

y=f(X,Y,u),

where u is a vector of independent variable values outside of the basic interval, and y is the corresponding estimate for the dependent variable.

Curve Fitting Toolbox™ supports extrapolation for interpolant curve and surface fits. For more information about interpolation, see Interpolation with Curve Fitting Toolbox. The following table describes the supported extrapolation methods in Curve Fitting Toolbox.

Extrapolation MethodDescriptionSupported Interpolation Methods
NoneNo extrapolation

Curve fits — PCHIP

Surface fits — natural neighbor

Curve and surface fits — cubic spline, linear, and nearest neighbor

Linear

This method fits a linear polynomial at each data point on the boundary of the fitting data's convex hull. Each linear polynomial follows the gradient at the corresponding data point.

Surface fits — cubic spline, nearest neighbor, and natural neighbor

Curve and surface fits — linear

Nearest neighbor

This method evaluates to the value of the nearest point on the boundary of the fitting data's convex hull.

Curve fits — PCHIP

Surface fits — natural neighbor

Curve and surface fits — cubic spline, linear, and nearest neighbor

Thin-plate spline

This method fits a thin-plate spline through the fitting data and extends it outside of the fitting data's convex hull.

Surface fits — thin-plate spline

Biharmonic spline

This method fits a biharmonic spline through the fitting data and extends it outside of the fitting data's convex hull.

Surface fits — biharmonic (v4)

PCHIP (piecewise cubic Hermite interpolating polynomial)

This method fits a shape-preserving piecewise cubic hermite interpolating polynomial (PCHIP) through the fitting data and extends it outside of the fitting data's convex hull.

Curve fits — PCHIP

Cubic spline

This method fits a cubic interpolating spline through the fitting data and extends it outside of the fitting data's convex hull.

Curve fits — cubic spline

Thin-plate spline extrapolation uses the tpaps function, and PCHIP extrapolation uses the pchip function. Interpolant surface fits use the MATLAB® function scatteredInterpolant function for none, linear, and nearest neighbor extrapolation, and the MATLAB function griddata for biharmonic extrapolation.

Selecting an Extrapolation Method

Curve Fitting Toolbox allows you to choose an extrapolation method for surface fits that use linear, nearest neighbor, or cubic spline interpolation. The extrapolation method you use depends on several factors, including the characteristics of the data being fit, the required smoothness of the curve, and post-fit analysis requirements. You can specify extrapolation methods interactively using the Curve Fitter app, or from the command line using the fit and fitoptions functions.

Select Extrapolation Method Interactively

  1. Generate data or load data into the workspace.

  2. 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.

  3. In the Curve Fitter app, select curve data. On the Curve Fitter tab, in the Data section, click Select Data. In the Select Fitting Data dialog box, select X data, Y data and Z data.

  4. Click the arrow in the Fit Type section to open the gallery, and click Interpolant in the Interpolation group.

Fit Options pane for Interpolant fit

You can specify the interpolation method by using the Interpolation method menu in the Fit Options pane. If the interpolation method supports multiple extrapolation methods, you can specify the extrapolation method using the Extrapolation method menu.

Specify Extrapolation Method from Command Line

Generate some noisy data using the membrane and randn functions.

n = 41;
M = membrane(1,20)+0.02*randn(n);
[X,Y] = meshgrid(1:n);

The matrix M contains data for the L-shaped membrane with added noise. The matrices X and Y contain the row and column index values, respectively, for the corresponding elements in M.

Display a surface plot of the data.

surf(X,Y,M)

Figure contains an axes object. The axes object contains an object of type surface.

The plot shows a wrinkled L-shaped membrane. The wrinkles in the membrane are caused by the noise in the data.

Specify Extrapolation Method Using fit Function

Use the fit function to fit a surface through the wrinkled membrane using linear interpolation. Specify the extrapolation method as nearest neighbor.

linfit = fit([X(:),Y(:)],M(:),"linearinterp",ExtrapolationMethod="nearest")
linfit = 
     Linear interpolant:
       linfit(x,y) = piecewise linear surface computed from p
       with nearest neighbor extrapolation
     Coefficients:
       p = coefficient structure

The output confirms that the function uses linear interpolation and nearest neighbor extrapolation to fit a surface through the data.

Evaluate the fit beyond the X and Y data domain by using the meshgrid function. Plot the result using the surf function.

[Xq,Yq] = meshgrid(-10:50);
Zlin = linfit(Xq,Yq);

surf(Xq,Yq,Zlin);

Figure contains an axes object. The axes object contains an object of type surface.

The plot shows that the nearest neighbor extrapolation method uses the data on the convex hull to extend the surface in each direction. This method of extrapolation generates waves that mimic the convex hull.

Specify Extrapolation Method Using fitoptions Function

Use the fitoptions function to generate fit options that use nearest neighbor interpolation and linear extrapolation.

fitOptions = fitoptions("nearestinterp",ExtrapolationMethod="linear")
fitOptions = 
  nearestinterpoptions with properties:

    ExtrapolationMethod: 'linear'
              Normalize: 'off'
                Exclude: []
                Weights: []
                 Method: 'NearestInterpolant'

fitOptions is a fit options object that specifies nearest neighbor interpolation and linear extrapolation.

Fit a surface through the wrinkled membrane using the options in fitOptions.

nearfit = fit([X(:),Y(:)],M(:),"nearestinterp",fitOptions)
nearfit = 
     Nearest neighbor interpolant:
       nearfit(x,y) = piecewise constant surface computed from p
       with linear extrapolation
     Coefficients:
       p = coefficient structure

Evaluate the fit beyond the X and Y data domain, and then plot the result.

Znear = nearfit(Xq,Yq);
surf(Xq,Yq,Znear);

Figure contains an axes object. The axes object contains an object of type surface.

The plot shows that the linear extrapolation method generates spikes outside of the X and Y convex hull. The plane segments that form the spikes follow the gradient at data points on the convex hull border.

See Also

Functions

Objects