Mercurial > octave-antonio
diff scripts/geometry/griddatan.m @ 6826:8618f29520c6
[project @ 2007-08-24 16:02:07 by jwe]
author | jwe |
---|---|
date | Fri, 24 Aug 2007 16:02:07 +0000 |
parents | 9fddcc586065 |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/scripts/geometry/griddatan.m Fri Aug 24 15:36:50 2007 +0000 +++ b/scripts/geometry/griddatan.m Fri Aug 24 16:02:07 2007 +0000 @@ -24,63 +24,62 @@ ## The function is defined by @code{@var{y} = f (@var{x})}. ## The interpolation points are all @var{xi}. ## -## The interpolation method can be 'nearest' or 'linear'. If method is -## omitted it defaults to 'linear'. +## The interpolation method can be @code{"nearest"} or @code{"linear"}. +## If method is omitted it defaults to @code{"linear"}. ## @seealso{griddata, delaunayn} ## @end deftypefn -function [yi] = griddatan (x,y,xi,method,varargin) - +function yi = griddatan (x, y, xi, method, varargin) + if (nargin == 3) - method="linear"; + method = "linear"; endif if (nargin < 3) - print_usage(); + print_usage (); endif - if (ischar(method)) - method=tolower(method); + if (ischar (method)) + method = tolower (method); endif - [m, n] = size(x); - [mi, ni] = size(xi); + [m, n] = size (x); + [mi, ni] = size (xi); - if (n != ni || size(y,1) != m || size(y,2) != 1) + 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); + tri = delaunayn (x); - yi = nan(mi, 1); + yi = nan (mi, 1); - if strcmp(method,'nearest') + if (strcmp (method, "nearest")) ## search index of nearest point - idx = dsearchn(x,tri,xi); - valid = !isnan(idx); + idx = dsearchn (x, tri, xi); + valid = !isnan (idx); yi(valid) = y(idx(valid)); - elseif strcmp(method,'linear') + elseif (strcmp (method, "linear")) ## search for every point the enclosing triangle - [tri_list, bary_list] = tsearchn(x,tri,xi); + [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); + 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]); + 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 - method - error("griddatan: unknown interpolation method"); + error ("griddatan: unknown interpolation method"); endif endfunction