| MATLAB Function Reference | Search  Help Desk |
| interp1 | Examples See Also |
One-dimensional data interpolation (table lookup)
yi = interp1(x,Y,xi)
yi = interp1(x,Y,xi,method)
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. The vector x specifies the points at which the data Y is given. If Y is a matrix, then the interpolation is performed for each column of Y and yi will be length(xi)-by-size(Y,2). Out of range values are returned as NaNs.
yi = interp1(x,Y,xi,method)
interpolates using alternative methods:
'nearest' for nearest neighbor interpolation
'linear' for linear interpolation
'spline' for cubic spline interpolation
'cubic' for cubic interpolation
x be monotonic. For faster interpolation when x is equally spaced, use the methods '*linear', '*cubic', '*nearest', or '*spline'.
The interp1 command interpolates between data points. It finds values of a one-dimensional function f(x) underlying the data at intermediate points. This is shown below, along with the relationship between vectors x, Y, xi, and yi.
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.
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 a 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
The interp1 command is a MATLAB M-file. The 'nearest', '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.
interpft One-dimensional interpolation using the FFT method.
interp2 Two-dimensional data interpolation (table lookup)
interp3 Three-dimensional data interpolation (table lookup)
interpn Multidimensional data interpolation (table lookup)
spline Cubic spline interpolation