## 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 Method | Description | Supported Interpolation Methods |
---|---|---|

None | No 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

Generate data or load data into the workspace.

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.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**.Click the arrow in the

**Fit Type**section to open the gallery, and click**Interpolant**in the**Interpolation**group.

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)

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);

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);

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

`fit`

|`fitoptions`

|`tpaps`

|`pchip`

|`griddata`