MATLAB Functions | Help Desk |
interp1
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.8585Now 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.633then the population in 1975, obtained by table lookup within the matrix
tab
, is
p = interp1(tab(:,1),tab(:,2),1975) p = 214.8585The
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