Skip to Main Content Skip to Search
Product Documentation

griddata - Interpolate scattered data

Syntax

vq = griddata(x,y,v,xq,yq)
vq = griddata(x,y,z,v,xq,yq,zq)
vq = griddata(..., method)

Description

vq = griddata(x,y,v,xq,yq) fits a surface of the form v = f(x,y) to the scattered data in the vectors (x,y,v). The griddata function interpolates the surface at the query points specified by (xq,yq) and returns the interpolated values, vq. The surface always passes through the data points defined by x and y.

vq = griddata(x,y,z,v,xq,yq,zq) fits a hypersurface of the form v = f(x,y,z).

vq = griddata(..., method) uses a specified interpolation method to compute vq.

Input Arguments

x

Vector specifying the x- coordinates of the sample points.

y

Vector specifying the y- coordinates of the sample points.

z

Vector specifying the z- coordinates of the sample points.

v

Vector of sample values that correspond to the sample coordinates x, y (and z for 3-D interpolation).

xq

Vector or array that specifies x- coordinates of the query points to be evaluated. xq must be the same size as yq (and zq for 3-D interpolation).

  • Specify an array if you want to pass a grid of query points. Use ndgrid or meshgrid to construct the array.

  • Specify a vector if you want to pass a collection of scattered points.

yq

Vector or array that specifies y- coordinates of the query points to be evaluated. yq must be the same size as xq (and zq for 3-D interpolation).

  • Specify an array if you want to pass a grid of query points. Use ndgrid or meshgrid to construct the array.

  • Specify a vector if you want to pass a collection of scattered points.

zq

Vector or array that specifies z- coordinates of the query points to be evaluated. zq must be the same size as xq and yq.

  • Specify an array if you want to pass a grid of query points. Use ndgrid or meshgrid to construct the array.

  • Specify a vector if you want to pass a collection of scattered points.

method

Keyword that specifies the interpolation method. Use one of the following:

'linear'

Linear interpolation (default)

'cubic'

Cubic interpolation

'natural'

Natural neighbor interpolation

'nearest'

Nearest neighbor interpolation

'v4'

MATLAB 4 griddata method

Output Arguments

vq

The interpolated values at the query points.

  • For 2-D interpolation, where xq and yq specify an m-by-n grid of query points, vq is an m-by-n array.

  • For 3-D interpolation, where xq, yq, and zq specify an m-by-n-by-p grid of query points, vq is an m-by-n-by-p array.

  • If xq, yq, (and zq for 3-D interpolation) are vectors that specify scattered points, vq is a vector of the same length.

Examples

Interpolate Scattered Data Over a Uniform Grid

Sample a function at 100 random points between -2.0 and 2.0.

rng(0,'twister')
x = rand(100,1)*4-2;  
y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);

x, y, and z are now vectors containing nonuniformly sampled data. Define a regular grid and interpolate the scattered data over the grid.

ti = -2:.25:2; 
[xq,yq] = meshgrid(ti,ti);
zq = griddata(x,y,z,xq,yq);

Plot the gridded data along with the scattered data.

mesh(xq,yq,zq), hold
plot3(x,y,z,'o'), hold off
set(gca,'XTick',[-2 -1 0 1 2]);
set(gca,'YTick',[-2 -1 0 1 2]);

Interpolate 3-D Data Set Over a Grid in the x-y Plane

Sample a function at 5000 random points between -1 and 1.

rng(0,'twister')
x = 2*rand(5000,1)-1; 
y = 2*rand(5000,1)-1; 
z = 2*rand(5000,1)-1;
v = x.^2 + y.^2 + z.^2;

x, y, and z are now vectors containing nonuniformly sampled data. Define a regular grid with points in the range [-0.8, 0.8].

d = -0.8:0.05:0.8;
[xq,yq,zq] = meshgrid(d,d,0);

Interpolate the scattered data over a rectangular region at z=0. Then, plot the results.

vq = griddata(x,y,z,v,xq,yq,zq);
surf(xq,yq,vq);
set(gca,'XTick',[-1 -0.5 0 0.5 1]);
set(gca,'YTick',[-1 -0.5 0 0.5 1]);

See Also

delaunay | griddatan | interpn | meshgrid | ndgrid | TriScatteredInterp

  


Free MATLAB Interactive Kit

Explore how to use MATLAB to make advancements in engineering and science.


Download free kit

Trials Available

Try the latest version of MATLAB and other MathWorks products.


Get trial software
 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS