# interp1

## Purpose

1-D data interpolation (table lookup).

## Synopsis

    yi = interp1(x,y,xi)
    yi = interp1(x,y,xi,'method')

## Description

`interp1` interpolates between data points. It finds values of a one-dimensional function underlying the data at intermediate points.

`yi = interp1(x,y,xi)` returns vector `yi` containing elements corresponding to the elements of `xi` and determined by interpolation within vectors `x` and `y`.

Interpolation is the same operation as table lookup. Described in table lookup terms, the table is `tab = [x,y]` and `interp1` looks up the elements of `xi` in `x`, and, based upon their locations, returns values `yi` interpolated within the elements of `y`.

`interp1` performs multiple output table lookup if `y` is a matrix. If `y` is a matrix with `length(x)` rows, and `n` columns, `interp1` returns a `length(xi)`-by-`n` matrix `yi` containing the multi-output table lookup results.

`yi = interp1(x,y,xi,'method')` specifies alternative interpolation methods, where `method` can be:

`'linear'`for linear interpolation

`'spline'` for cubic spline interpolation

`'cubic'` for cubic interpolation

All the interpolation methods require that `x` be monotonic. The `'cubic'` method also requires that `x` contain uniformly spaced points.

## Examples

Here are two vectors representing the census years from 1900 to 1990 and the corresponding United States population in millions of people.

    t = 1900:10:1990;
    p = [75.995   91.972  105.711  123.203  131.669 ...
        150.697  179.323  203.212  226.505  249.633];

The expression

    interp1(t,p,1975)

interpolates within the census data to estimate the population in 1975. The result is

    ans =
        214.8585

Now interpolate within the data at every year from 1900 to 2000, and plot the result.

     x = 1900:1:2000;
     y = interp1(t,p,x,'spline');
     plot(t,p,'o',x,y)

``Sometimes it is more convenient to think of interpolation in table lookup terms where the data are stored in a single table. If a portion of the census data is stored in single 5-by-2 table,

    tab =
        1950    150.697
        1960    179.323
        1970    203.212
        1980    226.505
        1990    249.633

then the population in 1975, obtained by table lookup within the matrix `tab`, is

    p = interp1(tab(:,1),tab(:,2),1975)

    p =
        214.8585

## Algorithm

`interp1` is a MATLAB M-file. The l`inear` and `cubic` methods have fairly straightforward implementations. For the `spline` method, `interp1` calls a function `spline` that uses the M-files `ppval`, `mkpp`, and `unmkpp`. These routines form a small suite of functions for working with piecewise polynomials. `spline` uses them in a fairly simple fashion to perform cubic spline interpolation. For access to the more advanced features, see these M-files and the Spline Toolbox.

## See Also

    griddata, interp2, interpft

## References

[1] C. de Boor, A Practical Guide to Splines, Springer-Verlag, 1978.

(c) Copyright 1994 by The MathWorks, Inc.