Transforms lists xin,yin,zin into matrices which can be used with the functions surf and mesh.
Updated 12 Mar 2012

View License

This file has been updated for a MUCH faster version on large arrays (100k elements plus).


MATLABs most commonly used 3-d plotting tools surf and mesh require rectangular grids to plot in 3-d, not x,y,z triples. This function converts arrays of x,y,z triples into rectangular grids to use with surf, mesh, etc.

common usage:
[x y z] = xyzplotter(xin,yin,zin)

xin,yin,zin are n x 1 arrays that define your surface. So xin(1),yin(1),zin(1) is the first point in your surface, etc. They do not need to be in any particular order.

Missing values in the grid will be filled in with NaNs. If you would like to interpolate the NaNs, I suggest inpaint_nans, file exchange number 4551. Here is the link:

Andrew Stephens contributed some good ideas to this code, mostly accumarray() and unique() which I didn't know existed before. For now I would like to acknowledge his generous contribution.

Cite As

Jack Kohoutek (2024). xyzplotter (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2011b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

This version is orders of magnitude faster than the last version, especially on large arrays.

This file has been updated for a MUCH faster version on large arrays (100k elements plus). Please see:


Updated code for a very large speed increase with more random datasets, thanks to some help from Andrew Stephens.

Addressed numbers 1-3 of the first comment. Thank you very much for the rating and feedback!