Mercurial > hg > octave-lyh
changeset 1712:26a5b528968c
[project @ 1996-01-08 02:15:53 by jwe]
author | jwe |
---|---|
date | Mon, 08 Jan 1996 02:15:53 +0000 |
parents | 4d552a89ceaa |
children | d9e42d0bab09 |
files | scripts/plot/mesh.m |
diffstat | 1 files changed, 45 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/mesh.m +++ b/scripts/plot/mesh.m @@ -14,14 +14,20 @@ # # You should have received a copy of the GNU General Public License # along with Octave; see the file COPYING. If not, write to the Free -# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. function mesh (x, y, z) # usage: mesh (x, y, z) # -# See also: plot, semilogx, semilogy, loglog, polar, meshdom, contour, -# bar, stairs, gplot, gsplot, replot, xlabel, ylabel, title +# Surface plot. If x, y, and z are matrices with the same dimensions, +# then corresponding elements represent vertices of the plot. If x and +# y are vectors, then a typical vertex is (x(j), y(i), z(i,j)). Thus, +# columns of z correspond to different x values and rows of z correspond +# to different y values. +# +# See also: plot, semilogx, semilogy, loglog, polar, meshgrid, meshdom, +# contour, bar, stairs, gplot, gsplot, replot, xlabel, ylabel, title if (nargin == 1) z = x; @@ -31,8 +37,8 @@ set surface; set nocontour; set noparametric; - set view 60, 30, 1, 1; - gsplot (z); + set view 60, 30, 1, 1 + gsplot (z'); else error ("mesh: argument must be a matrix"); endif @@ -40,16 +46,16 @@ if (is_vector (x) && is_vector (y) && is_matrix (z)) xlen = length (x); ylen = length (y); - if (ylen == rows (z) && xlen == columns (z)) - if (rows (x) == 1) - x = x'; + if (xlen == columns (z) && ylen == rows (z)) + if (rows (y) == 1) + y = y'; endif - len = 3 * ylen; - zz = zeros (xlen, ylen); + len = 3 * xlen; + zz = zeros (ylen, len); k = 1; for i = 1:3:len - zz(:,i) = x; - zz(:,i+1) = y(k) * ones (xlen, 1); + zz(:,i) = x(k) * ones (ylen, 1); + zz(:,i+1) = y; zz(:,i+2) = z(:,k); k++; endfor @@ -58,13 +64,37 @@ set surface; set nocontour; set parametric; - set view 60, 30, 1, 1; + set view 60, 30, 1, 1 gsplot (zz); else - msg = "mesh: rows (z) must be the same as length (y) and"; - msg = sprintf ("%s\ncolumns (z) must be the same as length (x)", msg); + msg = "mesh: rows (z) must be the same as length (x) and"; + msg = sprintf ("%s\ncolumns (z) must be the same as length (y)", msg); error (msg); endif + elseif (is_matrix (x) && is_matrix (y) && is_matrix (z)) + xlen = columns (z); + ylen = rows (z); + if (xlen == columns (x) && xlen == columns (y) && + ylen == rows (x) && ylen == rows(y)) + len = 3 * xlen; + zz = zeros (ylen, len); + k = 1; + for i = 1:3:len + zz(:,i) = x(:,k); + zz(:,i+1) = y(:,k); + zz(:,i+2) = z(:,k); + k++; + endfor + set hidden3d; + set data style lines; + set surface; + set nocontour; + set parametric; + set view 60, 30, 1, 1 + gsplot (zz); + else + error ("mesh: x, y, and z must have same dimensions"); + endif else error ("mesh: x and y must be vectors and z must be a matrix"); endif