Publication date: 11/10/2021

## Interpolate

The Interpolate() function performs linear interpolation for continuous data or bilinear interpolation for two-dimensional continuous data.

In the simplest case, the function finds the y value that corresponds to a given x value between two sets of points. You might use Interpolate() to calculate missing values between data points.

The data points can be specified as alternating ordered arguments:

`Interpolate( x, x1, y1, x2, y2, ... );`

or as matrices containing the x and y values:

`Interpolate( x, xmatrix, ymatrix );`

Suppose that your data set includes the height of individuals from age 20 through 25. However, there is no data point for age 23. To estimate the height for 23-year-olds, use interpolation. The following example shows the value that you want to evaluate (age 23), followed by matrices for ages (20 through 25) and heights (59 through 75).

`Interpolate( 23, [20 21 22 24 25], [59 62 56 69 75] );`

returns:

`62.5`

The value 62.5 is halfway between the y values 56 and 69, just as 23 is halfway between the x values 22 and 24.

You can also interpolate multiple points by specifying a matrix or list of values in the first argument.

`Interpolate( [23, 24.5], [20 21 22 24 25], [59 62 56 69 75] );`

returns:

`[62.5, 72]`

#### Bilinear Interpolation

You can also interpolate in two-dimensions:

`Interpolate( {x, y}, xvector, yvector, zmatrix );`

Here, the first argument is a list of two points, the second and third arguments are vectors that define the grid of x and y values, and the fourth argument is a matrix of data points. The function then finds the interpolated z value within the appropriate quadrant of the zmatrix. The appropriate quadrant is found by comparing the x and y values to the xvector and yvector arguments.

Suppose you have a 2x3 matrix and you want to interpolate a point that is halfway between the first and second rows of points and halfway between the second and third columns of points.

`Interpolate( {0.5, 0.75}, [0 1], [0 0.5 1], [10 15 20, 12 16 18] );`

returns:

`17.25`

Note that 0.5 is halfway between 0 and 1 for the x values (corresponding to the rows of the matrix) and 0.75 is halfway between 0.5 and 1 for the y values (corresponding to the columns of the matrix). You can find the bilinear interpolation in two steps:

1. Find the halfway points between the second and third columns for the each row of the matrix:

Row 1: 17.5 is halfway between 15 and 20.

Row 2: 17 is halfway between 16 and 18.

2. Find the halfway point between the two points in the previous step: 17.25.

Notes:

The x values must be in ascending order. For example, Interpolate(2,1,1,3,3) returns 2. However, Interpolate(2,3,3,1,1) returns a missing value (.).

Interpolate() is best used for continuous data, but Step() is designed for discrete data. See Step.