Interpolate 2-D or 3-D scattered data
a surface of the form v = f(x,y) to
the scattered data in the vectors
vq = griddata(
interpolates the surface at the query points specified by
returns the interpolated values,
vq. The surface
always passes through the data points defined by
specifies the interpolation method used to compute
vq = griddata(___,
vq using any
of the input arguments in the previous syntaxes.
method can be
'v4'. The default method is
Qhull-specific options are no longer supported. Remove the
options argument from all instances in your code that
pass it to
In a future release,
griddata will not accept any
input vectors of mixed orientation. In addition, the following syntaxes will
[Xq,Yq,Vq] = griddata(x,y,v,xq,yq) [Xq,Yq,Vq] = griddata(x,y,v,xq,yq,
Interpolate randomly scattered data on a uniform grid of query points.
Sample a function at 200 random points between
xy = -2.5 + 5*gallery('uniformdata',[200 2],0); x = xy(:,1); y = xy(:,2); v = x.*exp(-x.^2-y.^2);
v are vectors containing scattered (nonuniform) sample points and data.
Define a regular grid and interpolate the scattered data over the grid.
[xq,yq] = meshgrid(-2:.2:2, -2:.2:2); vq = griddata(x,y,v,xq,yq);
Plot the gridded data as a mesh and the scattered data as dots.
mesh(xq,yq,vq) hold on plot3(x,y,v,'o') xlim([-2.7 2.7]) ylim([-2.7 2.7])
Interpolate a 3-D slice of a 4-D function that is sampled at randomly scattered points.
Sample a 4-D function at 2500 random points between
1. The vectors
z contain the nonuniform sample points.
x = 2*rand(2500,1) - 1; y = 2*rand(2500,1) - 1; z = 2*rand(2500,1) - 1; v = x.^2 + y.^3 - z.^4;
Define a regular grid with xy points in the range [-1, 1], and set . Interpolating on this grid of 2-D query points
(xq,yq,0) produces a 3-D interpolated slice
(xq,yq,0,vq) of the 4-D data set
d = -1:0.05:1; [xq,yq,zq] = meshgrid(d,d,0);
Interpolate the scattered data on the grid. Plot the results.
vq = griddata(x,y,z,v,xq,yq,zq); plot3(x,y,v,'ro') hold on surf(xq,yq,vq)
Compare the results of several different interpolation algorithms offered by
Create a sample data set of 50 scattered points. The number of points is artificially small to highlight the differences between the interpolation methods.
x = -3 + 6*rand(50,1); y = -3 + 6*rand(50,1); v = sin(x).^4 .* cos(y);
Create a grid of query points.
[xq,yq] = meshgrid(-3:0.1:3);
Interpolate the sample data using the
'cubic' methods. Plot the results for comparison.
z1 = griddata(x,y,v,xq,yq,'nearest'); plot3(x,y,v,'mo') hold on mesh(xq,yq,z1) title('Nearest Neighbor') legend('Sample Points','Interpolated Surface','Location','NorthWest')
z2 = griddata(x,y,v,xq,yq,'linear'); figure plot3(x,y,v,'mo') hold on mesh(xq,yq,z2) title('Linear') legend('Sample Points','Interpolated Surface','Location','NorthWest')
z3 = griddata(x,y,v,xq,yq,'natural'); figure plot3(x,y,v,'mo') hold on mesh(xq,yq,z3) title('Natural Neighbor') legend('Sample Points','Interpolated Surface','Location','NorthWest')
z4 = griddata(x,y,v,xq,yq,'cubic'); figure plot3(x,y,v,'mo') hold on mesh(xq,yq,z4) title('Cubic') legend('Sample Points','Interpolated Surface','Location','NorthWest')
Plot the exact solution.
figure plot3(x,y,v,'mo') hold on mesh(xq,yq,sin(xq).^4 .* cos(yq)) title('Exact Solution') legend('Sample Points','Exact Surface','Location','NorthWest')
z— Sample point coordinates
Sample point coordinates, specified as vectors. Corresponding
the xyz coordinates of points where the sample
v are known. The sample points must be unique.
v— Sample values
Sample values, specified as a vector. The sample values in
to the sample points in
v contains complex numbers, then
the real and imaginary parts separately.
Complex Number Support: Yes
zq— Query points
Query points, specified as vectors or arrays. Corresponding
elements in the vectors or arrays specify the xyz coordinates
of the query points. The query points are the locations where
The specified query points must lie inside the convex hull of
the sample data points.
query points outside of the convex hull.
method— Interpolation method
Interpolation method, specified as one of the methods in this table.
|Triangulation-based linear interpolation (default) supporting 2-D and 3-D interpolation.||C0|
|Triangulation-based nearest neighbor interpolation supporting 2-D and 3-D interpolation.||Discontinuous|
|Triangulation-based natural neighbor interpolation supporting 2-D and 3-D interpolation. This method is an efficient tradeoff between linear and cubic.||C1 except at sample points|
|Triangulation-based cubic interpolation supporting 2-D interpolation only.||C2|
Biharmonic spline interpolation (MATLAB® 4
vq— Interpolated values
Interpolated values, returned as a vector or array. The size
vq depends on the size of the query point inputs
For 2-D interpolation, where
n grid of query points,
For 3-D interpolation, where
zq specify an
of query points,
vq is an
3-D interpolation) are vectors that specify scattered points, then
a vector of the same length.
For all interpolation methods other than
'v4', the output
NaN values for query
points outside the convex hull of the sample data. The
'v4' method performs the same calculation for all
points regardless of location.