Mercurial > hg > octave-lyh
diff scripts/plot/meshgrid.m @ 5378:b2a5596a3f7b
[project @ 2005-06-02 16:01:25 by jwe]
author | jwe |
---|---|
date | Thu, 02 Jun 2005 16:01:25 +0000 |
parents | 4c8a2e4e0717 |
children | e81543fdbe01 |
line wrap: on
line diff
--- a/scripts/plot/meshgrid.m +++ b/scripts/plot/meshgrid.m @@ -18,11 +18,16 @@ ## 02110-1301, USA. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{xx}, @var{yy}] =} meshgrid (@var{x}, @var{y}) +## @deftypefn {Function File} {[@var{xx}, @var{yy}, @var{zz}] =} meshgrid (@var{x}, @var{y}, @var{z}) +## @deftypefnx {Function File} {[@var{xx}, @var{yy}] =} meshgrid (@var{x}, @var{y}) ## @deftypefnx {Function File} {[@var{xx}, @var{yy}] =} meshgrid (@var{x}) -## Given vectors of @var{x} and @var{y} coordinates, return two matrices corresponding -## to the @var{x} and @var{y} coordinates of a mesh. The rows of @var{xx} are copies of @var{x}, -## and the columns of @var{yy} are copies of @var{y}. +## Given vectors of @var{x}, @var{y}, and @var{z} coordinates, return +## three dimensional arrays corresponding to the @var{x}, @var{y}, and +## @var{z} coordinates of a mesh. Given only @var{x} and @var{y}, +## return matrices corresponding to the @var{x} and @var{y} coordinates +## of a mesh. The rows of @var{xx} are copies of @var{x}, and the +## columns of @var{yy} are copies of @var{y}. If @var{y} is omitted, +## then it is assumed to be the same as @var{x}. ## @end deftypefn ## ## @seealso{sombrero, plot, semilogx, semilogy, loglog, polar, mesh, @@ -30,7 +35,7 @@ ## Author: jwe -function [xx, yy] = meshgrid (x, y) +function [xx, yy, zz] = meshgrid (x, y, z) if (nargin == 1) y = x; @@ -42,8 +47,19 @@ else error ("meshgrid: arguments must be vectors"); endif + elseif (nargin == 3) + if (isvector (x) && isvector (y) && isvector (z)) + lenx = length (x); + leny = length (y); + lenz = length (z); + xx = repmat (ones (leny, 1) * x(:).', [1, 1, lenz]); + yy = repmat (y(:) * ones (1, lenx), [1, 1, lenz]); + zz = reshape (repmat (z(:).', lenx*leny, 1)(:), leny, lenx, lenz); + else + error ("meshgrid: arguments must be vectors"); + endif else - usage ("[xx, yy] = meshgrid (x, y)"); + usage ("[xx, yy, zz] = meshgrid (x, y, z)"); endif endfunction