Interpolation for 3D gridded data in meshgrid format
returns
interpolated values of a function of three variables at specific query
points using linear interpolation. The results always pass through
the original sampling of the function. Vq
= interp3(X,Y,Z
,V
,Xq,Yq,Zq
)X
, Y
,
and Z
contain the coordinates of the sample points. V
contains
the corresponding function values at each sample point. Xq
, Yq
,
and Zq
contain the coordinates of the query points.
also
specifies Vq
= interp3(___,method
,extrapval
)extrapval
, a scalar value that is assigned
to all queries that lie outside the domain of the sample points.
If you omit the extrapval
argument for queries
outside the domain of the sample points, then based on the method
argument interp3
returns
one of the following:
The extrapolated values for the 'spline'
and 'makima'
methods
NaN
values for other interpolation methods
Load the points and values of the flow function, sampled at 10 points in each dimension.
[X,Y,Z,V] = flow(10);
The flow
function returns the grid in the arrays, X
, Y
, Z
. The grid covers the region, $$0.1\le X\le 10$$, $$3\le Y\le 3$$, $$3\le Z\le 3$$, and the spacing is $$\Delta X=0.5$$, $$\Delta Y=0.7$$, and $$\Delta Z=0.7$$.
Now, plot slices through the volume of the sample at: X=6
, X=9
, Y=2
, and Z=0
.
figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat
Create a query grid with spacing of 0.25.
[Xq,Yq,Zq] = meshgrid(.1:.25:10,3:.25:3,3:.25:3);
Interpolate at the points in the query grid and plot the results using the same slice planes.
Vq = interp3(X,Y,Z,V,Xq,Yq,Zq);
figure
slice(Xq,Yq,Zq,Vq,[6 9],2,0);
shading flat
Load the points and values of the flow function, sampled at 10 points in each dimension.
[X,Y,Z,V] = flow(10);
The flow
function returns the grid in the arrays, X
, Y
, Z
. The grid covers the region, $$0.1\le X\le 10$$, $$3\le Y\le 3$$, $$3\le Z\le 3$$, and the spacing is $$\Delta X=0.5$$, $$\Delta Y=0.7$$, and $$\Delta Z=0.7$$.
Plot slices through the volume of the sample at: X=6
, X=9
, Y=2
, and Z =0
.
figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat
Create a query grid with spacing of 0.25.
[Xq,Yq,Zq] = meshgrid(.1:.25:10,3:.25:3,3:.25:3);
Interpolate at the points in the query grid using the 'cubic'
interpolation method. Then plot the results.
Vq = interp3(X,Y,Z,V,Xq,Yq,Zq,'cubic'); figure slice(Xq,Yq,Zq,Vq,[6 9],2,0); shading flat
Create the grid vectors, x
, y
, and z
. These vectors define the points associated with values in V
.
x = 1:100; y = (1:50)'; z = 1:30;
Define the sample values to be a 50by100by30 random number array, V
. Use the gallery
function to create the array.
V = gallery('uniformdata',50,100,30,0);
Evaluate V
at three points outside the domain of x
, y
, and z
. Specify extrapval = 1
.
xq = [0 0 0];
yq = [0 0 51];
zq = [0 101 102];
vq = interp3(x,y,z,V,xq,yq,zq,'linear',1)
vq = 1×3
1 1 1
All three points evaluate to 1
because they are outside the domain of x
, y
, and z
.
X,Y,Z
— Sample grid pointsSample grid points, specified as real arrays or vectors. The sample grid points must be unique.
If X
, Y
, and Z
are
arrays, then they contain the coordinates of a full grid (in meshgrid format).
Use the meshgrid
function to
create the X
, Y
, and Z
arrays
together. These arrays must be the same size.
If X
, Y
, and Z
are
vectors, then they are treated as a grid vectors. The values in these vectors
must be strictly
monotonic and increasing.
In a future release, interp3
will not accept
mixed combinations of row and column vectors for the sample and query
grids. Instead, you must construct the full grid using meshgrid
. Alternatively, if you have
a large data set, you can use griddedInterpolant
instead
of interp3
.
Example: [X,Y,Z] = meshgrid(1:30,10:10,1:5)
Data Types: single
 double
V
— Sample valuesSample values, specified as a real or complex array. The size
requirements for V
depend on the size of X
, Y
,
and Z
:
If X
, Y
, and Z
are
arrays representing a full grid (in meshgrid
format),
then the size of V
matches the size of X
, Y
,
or Z
.
If X
, Y
, and Z
are
grid vectors, then size(V) = [length(Y) length(X) length(Z)]
.
If V
contains complex numbers, then interp3
interpolates
the real and imaginary parts separately.
Example: rand(10,10,10)
Data Types: single
 double
Complex Number Support: Yes
Xq,Yq,Zq
— Query pointsQuery points, specified as a real scalars, vectors, or arrays.
If Xq
, Yq
, and Zq
are
scalars, then they are the coordinates of a single query point in R^{3}.
If Xq
, Yq
, and Zq
are
vectors of different orientations, then Xq
, Yq
,
and Zq
are treated as grid vectors in R^{3}.
If Xq
, Yq
, and Zq
are
vectors of the same size and orientation, then Xq
, Yq
,
and Zq
are treated as scattered points in R^{3}.
If Xq
, Yq
, and Zq
are
arrays of the same size, then they represent either a full grid of
query points (in meshgrid
format) or scattered
points in R^{3}.
In a future release, interp3
will not accept
mixed combinations of row and column vectors for the sample and query
grids. Instead, you must construct the full grid using meshgrid
. Alternatively, if you have
a large data set, you can use griddedInterpolant
instead
of interp3
.
Example: [Xq,Yq,Zq] = meshgrid((1:0.1:10),(5:0.1:0),3:5)
Data Types: single
 double
k
— Refinement factor1
(default)  real, nonnegative, integer scalarRefinement factor, specified as a real, nonnegative, integer
scalar. This value specifies the number of times to repeatedly divide
the intervals of the refined grid in each dimension. This results
in 2^k1
interpolated points between sample values.
If k
is 0
, then Vq
is
the same as V
.
interp3(V,1)
is the same as interp3(V)
.
The following illustration depicts k=2
in
one plane of R^{3}.
There are 72 interpolated values in red and 9 sample values in black.
Example: interp3(V,2)
Data Types: single
 double
method
— Interpolation method'linear'
(default)  'nearest'
 'cubic'
 'spline'
 'makima'
Interpolation method, specified as one of the options in this table.
Method  Description  Continuity  Comments 

'linear'  The interpolated value at a query point is based on linear interpolation of the values at neighboring grid points in each respective dimension. This is the default interpolation method.  C^{0} 

'nearest'  The interpolated value at a query point is the value at the nearest sample grid point.  Discontinuous 

'cubic'  The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension. The interpolation is based on a cubic convolution.  C^{1} 

'makima'  Modified Akima cubic Hermite interpolation. The interpolated value at a query point is based on a piecewise function of polynomials with degree at most three evaluated using the values of neighboring grid points in each respective dimension. The Akima formula is modified to avoid overshoots.  C^{1} 

'spline'  The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension. The interpolation is based on a cubic spline using notaknot end conditions.  C^{2} 

extrapval
— Function value outside domain of X
, Y
, and Z
Function value outside domain of X
, Y
,
and Z
, specified as a real or complex scalar. interp3
returns
this constant value for all points outside the domain of X
, Y
,
and Z
.
Example: 5
Example: 5+1i
Data Types: single
 double
Complex Number Support: Yes
Vq
— Interpolated valuesInterpolated values, returned as a real or complex scalar, vector,
or array. The size and shape of Vq
depends on the
syntax you use and, in some cases, the size and value of the input
arguments.
Syntaxes  Special Conditions  Size of Vq  Example 

interp3(X,Y,Z,V,Xq,Yq,Zq) interp3(V,Xq,Yq,Zq) and variations of these syntaxes that include method or extrapval  Xq , Yq , and Zq are
scalars.  Scalar  size(Vq) = [1 1] when you pass Xq , Yq ,
and Zq as scalars. 
Same as above  Xq , Yq , and Zq are
vectors of the same size and orientation.  Vector of same size and orientation as Xq , Yq ,
and Zq  If size(Xq) = [100 1] , and size(Yq)
= [100 1] , and size(Zq) = [100
1] , then size(Vq) = [100 1] . 
Same as above  Xq , Yq , and Zq are
vectors of mixed orientation.  size(Vq) = [length(Y) length(X) length(Z)]  If size(Xq) = [1 100] ,and size(Yq)
= [50 1] , and size(Zq) = [1 5] ,then size(Vq) = [50 100 5] . 
Same as above  Xq , Yq , and Zq are
arrays of the same size.  Array of the same size as Xq , Yq ,
and Zq  If size(Xq) = [50 25] ,and size(Yq)
= [50 25] , and size(Zq) = [50 25] , then size(Vq) = [50 25] . 
interp3(V,k) and variations of this syntax that include method or extrapval  None  Array in which the length of the  If size(V) = [10 12 5] ,and k
= 3 , then size(Vq) = [73 89 33] . 
A set of values that are always increasing
or decreasing, without reversals. For example, the sequence, a
= [2 4 6 8]
is strictly monotonic and increasing. The sequence, b
= [2 4 4 6 8]
is not strictly monotonic because there is
no change in value between b(2)
and b(3)
.
The sequence, c = [2 4 6 8 6]
contains a reversal
between c(4)
and c(5)
, so it
is not monotonic at all.
For interp3
, a full grid
consists of three arrays whose elements represent a grid of points
that define a region in R^{3}.
The first array contains the xcoordinates, the
second array contains the ycoordinates, and the
third array contains the zcoordinates. The values
in each array vary along a single dimension and are constant along
the other dimensions.
The values in the xarray are strictly monotonic,
increasing, and vary along the second dimension. The values in the yarray
are strictly monotonic, increasing, and vary along the first dimension.
The values in the zarray are strictly monotonic,
increasing, and vary along the third dimension. Use the meshgrid
function to create a full grid
that you can pass to interp3
.
For interp3
, grid vectors
consist of three vectors of mixedorientation that define the points
on a grid in R^{3}.
For example, the following code creates the grid vectors for the region, 1 ≤ x ≤ 3, 4 ≤ y ≤ 5, and 6 ≤ z ≤ 8:
x = 1:3; y = (4:5)'; z = 6:8;
For interp3
, scattered
points consist of three arrays or vectors, Xq
, Yq
,
and Zq
, that define a collection of points scattered
in R^{3}.
The ith array contains the coordinates in the ith dimension.
For example, the following code specifies the points, (1, 19, 10), (6, 40, 1), (15, 33, 22), and (0, 61, 13).
Xq = [1 6; 15 0]; Yq = [19 40; 33 61]; Zq = [10 1; 22 13];
Usage notes and limitations:
Xq
, Yq
, and Zq
must
be the same size. Use meshgrid
to evaluate on
a grid.
For best results, provide X
, Y
,
and Z
as vectors.
Code generation does not support the 'makima'
interpolation method.
For the 'cubic'
interpolation method, if the grid does not have uniform
spacing, an error results. In this case, use the
'spline'
interpolation method.
For best results when you use the 'spline'
interpolation method:
Use meshgrid
to create the inputs
Xq
, Yq
, and
Zq
.
Use a small number of interpolation points relative to the
dimensions of V
. Interpolating over a
large set of scattered points can be inefficient.
Usage notes and limitations:
V
must be a double or single 3D array.
V
can be real or complex.
X
, Y
, and Z
must:
Have the same type (double or single).
Be finite vectors or 3D arrays with increasing and nonrepeating elements in corresponding dimensions.
Align with cartesian axes when
X
,Y
, and
Z
are 3D arrays (as if they were
produced by meshgrid
).
Have dimensions consistent with V
.
Xq
, Yq
, and Zq
must be vectors or arrays of the same type (double or single). If
Xq
, Yq
, and Zq
are arrays, then they must have the same size. If they are vectors with
different lengths, then one of them must have a different
orientation.
method
must be 'linear'
or'nearest'
.
The extrapolation for the outofboundary input is not supported.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
A modified version of this example exists on your system. Do you want to open this version instead?
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.