Generate a regular mesh from irregular data using interpolation.
The function is defined by z = f (x, y)
. Inputs
x, y, z
are vectors of the same length or
x, y
are vectors and z
is matrix.
The interpolation points are all (xi, yi)
. If xi,
yi are vectors then they are made into a 2-D mesh.
The interpolation method can be "nearest"
, "cubic"
or
"linear"
. If method is omitted it defaults to "linear"
.
See also: griddata3, griddatan, delaunay.
The following code
clf; colormap ("default"); x = 2*rand (100,1) - 1; y = 2*rand (size (x)) - 1; z = sin (2*(x.^2 + y.^2)); [xx,yy] = meshgrid (linspace (-1,1,32)); zz = griddata (x,y,z,xx,yy); mesh (xx, yy, zz); title ("nonuniform grid sampled at 100 points");
Produces the following figure
Figure 1 |
---|
The following code
clf; colormap ("default"); x = 2*rand (1000,1) - 1; y = 2*rand (size (x)) - 1; z = sin (2*(x.^2 + y.^2)); [xx,yy] = meshgrid (linspace (-1,1,32)); zz = griddata (x,y,z,xx,yy); mesh (xx, yy, zz); title ("nonuniform grid sampled at 1000 points");
Produces the following figure
Figure 1 |
---|
The following code
clf; colormap ("default"); x = 2*rand (1000,1) - 1; y = 2*rand (size (x)) - 1; z = sin (2*(x.^2 + y.^2)); [xx,yy] = meshgrid (linspace (-1,1,32)); zz = griddata (x,y,z,xx,yy,"nearest"); mesh (xx, yy, zz); title ("nonuniform grid sampled at 1000 points with nearest neighbor");
Produces the following figure
Figure 1 |
---|
Package: octave