Mercurial > hg > octave-nkf
view scripts/geometry/griddatan.m @ 14001:5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
* voronoi.m, image.m, imagesc.m, imshow.m, area.m, bar.m, barh.m, clabel.m,
clf.m, compass.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m, ezplot.m,
ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m, findall.m,
findobj.m, loglog.m, mesh.m, pareto.m, patch.m, pie.m, pie3.m, plot.m, polar.m,
quiver.m, quiver3.m, rectangle.m, ribbon.m, rose.m, scatter.m, scatter3.m,
semilogx.m, semilogy.m, slice.m, stem.m, surf.m, surface.m, text.m, title.m,
trimesh.m, triplot.m, trisurf.m, xlabel.m, ylabel.m, zlabel.m:
Update documentation for functions returning a graphics handle h.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Tue, 06 Dec 2011 13:09:17 -0800 |
parents | c792872f8942 |
children | 72c96de7a403 |
line wrap: on
line source
## Copyright (C) 2007-2011 David Bateman ## ## This file is part of Octave. ## ## Octave is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or (at ## your option) any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {Function File} {@var{yi} =} griddatan (@var{x}, @var{y}, @var{xi}, @var{method}, @var{options}) ## ## Generate a regular mesh from irregular data using interpolation. ## The function is defined by @code{@var{y} = f (@var{x})}. ## The interpolation points are all @var{xi}. ## ## The interpolation method can be @code{"nearest"} or @code{"linear"}. ## If method is omitted it defaults to @code{"linear"}. ## @seealso{griddata, delaunayn} ## @end deftypefn ## Author: David Bateman <dbateman@free.fr> function yi = griddatan (x, y, xi, method, varargin) if (nargin == 3) method = "linear"; endif if (nargin < 3) print_usage (); endif if (ischar (method)) method = tolower (method); endif [m, n] = size (x); [mi, ni] = size (xi); if (n != ni || size (y, 1) != m || size (y, 2) != 1) error ("griddatan: dimensional mismatch"); endif ## triangulate data ## tri = delaunayn(x, varargin{:}); tri = delaunayn (x); yi = NaN (mi, 1); if (strcmp (method, "nearest")) ## search index of nearest point idx = dsearchn (x, tri, xi); valid = !isnan (idx); yi(valid) = y(idx(valid)); elseif (strcmp (method, "linear")) ## search for every point the enclosing triangle [tri_list, bary_list] = tsearchn (x, tri, xi); ## only keep the points within triangles. valid = !isnan (tri_list); tri_list = tri_list(!isnan (tri_list)); bary_list = bary_list(!isnan (tri_list), :); nr_t = rows (tri_list); ## assign x,y for each point of simplex xt = reshape (x(tri(tri_list,:),:), [nr_t, n+1, n]); yt = y(tri(tri_list,:)); ## Use barycentric coordinate of point to calculate yi yi(valid) = sum (y(tri(tri_list,:)) .* bary_list, 2); else error ("griddatan: unknown interpolation METHOD"); endif endfunction %!testif HAVE_QHULL %! [xx,yy] = meshgrid(linspace(-1,1,32)); %! xi = [xx(:), yy(:)]; %! x = (2 * rand(100,2) - 1); %! x = [x;1,1;1,-1;-1,-1;-1,1]; %! y = sin(2*(sum(x.^2,2))); %! zz = griddatan(x,y,xi,'linear'); %! zz2 = griddata(x(:,1),x(:,2),y,xi(:,1),xi(:,2),'linear'); %! assert (zz, zz2, 1e-10) %!testif HAVE_QHULL %! [xx,yy] = meshgrid(linspace(-1,1,32)); %! xi = [xx(:), yy(:)]; %! x = (2 * rand(100,2) - 1); %! x = [x;1,1;1,-1;-1,-1;-1,1]; %! y = sin(2*(sum(x.^2,2))); %! zz = griddatan(x,y,xi,'nearest'); %! zz2 = griddata(x(:,1),x(:,2),y,xi(:,1),xi(:,2),'nearest'); %! assert (zz, zz2, 1e-10)