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