home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / plot / contour.m < prev    next >
Text File  |  1996-09-28  |  2KB  |  82 lines

  1. # Copyright (C) 1993, 1994, 1995 John W. Eaton
  2. # This file is part of Octave.
  3. # Octave is free software; you can redistribute it and/or modify it
  4. # under the terms of the GNU General Public License as published by the
  5. # Free Software Foundation; either version 2, or (at your option) any
  6. # later version.
  7. # Octave is distributed in the hope that it will be useful, but WITHOUT
  8. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  9. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  10. # for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with Octave; see the file COPYING.  If not, write to the Free
  13. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  14.  
  15. function contour (z, n, x, y)
  16.  
  17. # usage: contour (z, n, x, y)
  18. #
  19. # See also: plot, semilogx, semilogy, loglog, polar, mesh, contour,
  20. #           bar, stairs, gplot, gsplot, replot, xlabel, ylabel, title 
  21.  
  22.  
  23.   if (nargin == 1)
  24.     n = 10;
  25.   endif
  26.  
  27.   if (nargin == 1 || nargin == 2)
  28.     if (is_matrix (z))
  29.       set nosurface;
  30.       set contour;
  31.       set cntrparam bspline
  32.       command = sprintf ("set cntrparam levels %d", n);
  33.       eval (command);
  34.       set noparametric;
  35.       set view 0, 0, 1.9, 1
  36.       gsplot z w l 1;
  37.     else
  38.       error ("mesh: argument must be a matrix");
  39.     endif
  40.   elseif (nargin == 4)
  41.     if (is_vector (x) && is_vector (y) && is_matrix (z))
  42.       xlen = length (x);
  43.       ylen = length (y);
  44.       if (xlen == rows (z) && ylen == columns (z))
  45.         if (rows (x) == 1)
  46.           x = x';
  47.         endif
  48.         len = 3 * ylen;
  49.         zz = zeros (xlen, ylen);
  50.         k = 1;
  51.         for i = 1:3:len
  52.           zz(:,i)   = x;
  53.           zz(:,i+1) = y(k) * ones (xlen, 1);
  54.           zz(:,i+2) = z(:,k);
  55.           k++;
  56.         endfor
  57.         set nosurface
  58.         set contour
  59.         set cntrparam bspline
  60.         command = sprintf ("set cntrparam levels %d", n);
  61.         eval (command);
  62.     set parametric;
  63.         set view 0, 0, 1.9, 1
  64.     gsplot zz w l 1;
  65.       else
  66.         msg = "mesh: rows (z) must be the same as length (x) and";
  67.         msg = sprintf ("%s\ncolumns (z) must be the same as length (y)", msg);
  68.         error (msg);
  69.       endif
  70.     else
  71.       error ("mesh: x and y must be vectors and z must be a matrix");
  72.     endif    
  73.   else
  74.     usage ("mesh (z, levels, x, y)");
  75.   endif
  76.  
  77. endfunction
  78.