Data gridding and hypersurface fitting (dimension ≥ 2)


yi = griddatan(x,y,xi)
yi = griddatan(x,y,xi,method)
yi = griddatan(x,y,xi,method,options)


yi = griddatan(x,y,xi) fits a hyper-surface of the form y = f(x) to the data in the (usually) nonuniformly-spaced vectors (x, y). griddatan interpolates this hyper-surface at the points specified by xi to produce yi. xi can be nonuniform.

X is of dimension m-by-n, representing m points in n-dimensional space. y is of dimension m-by-1, representing m values of the hyper-surface f(X). xi is a vector of size p-by-n, representing p points in the n-dimensional space whose surface value is to be fitted. yi is a vector of length p approximating the values f(xi). The hypersurface always goes through the data points (X,y). xi is usually a uniform grid (as produced by meshgrid).

yi = griddatan(x,y,xi,method) defines the type of surface fit to the data, where 'method' is one of:

method stringDescriptionContinuity
'linear'Triangulation-based linear interpolation (default).C0
'nearest'Nearest neighbor interpolation.Discontinuous

All the methods are based on a Delaunay triangulation of the data.

If method is [], the default 'linear' method is used.

yi = griddatan(x,y,xi,method,options) specifies a cell array of strings options to be used in Qhull via delaunayn.

If options is [], the default options are used. If options is {''}, no options are used, not even the default.


collapse all

Fit a Hypersurface

X = 2*gallery('uniformdata',[5000 3],0)-1;
Y = sum(X.^2,2);
d = -0.8:0.05:0.8;
[y0,x0,z0] = ndgrid(d,d,d);
XI = [x0(:) y0(:) z0(:)];
YI = griddatan(X,Y,XI);

Since it is difficult to visualize 4-D data sets, use isosurface at 0.8:

YI = reshape(YI, size(x0));
p = patch(isosurface(x0,y0,z0,YI,0.8));

p.FaceColor = 'blue';
p.EdgeColor = 'none';

axis equal
lighting phong

Introduced before R2006a

Was this topic helpful?