Plot a three dimensional matrix

2 views (last 30 days)
hello,
I have a 128x128x128 matrix with coeficients between 0 and 1 representing the discrete wave function of a BEC. I want to interpret this data with a graph, make a plot such as giving different intenstity colour to each (i,j,k) coeficient from the matrix, or plotting some kind of isosurface. Most important, I want to see the significant values "spatial shape". I accept suggestions. Thanks for your help.

Accepted Answer

Image Analyst
Image Analyst on 23 Aug 2013
Edited: Image Analyst on 23 Aug 2013
MATLAB doesn't have really great 3D volume visualization. About the best it can do are surface renderings or cutaway views, like you can see in the visualizations chapter in the help (MATLAB->Graphics->2-D and 3-D Plots->Surfaces, Volumes, and Polygons), for example the slice() or isosurface() functions. Perhaps one of those will work for you. If you want a two and a half D rendering, you can take one of your planes and pass it into surf(). Or you can somehow compress your image into a 2D image, like sum it along one of the dimensions or take a "maximum intensity projection" or something like that, then display it with image() or imshow(), after which you can apply a colormap if you want.
If the points you'd really like to visualize are scattered around various locations in your volume, like a wavy sheet, a surface like an ellipsoid, or even just isolated points, then you might be able to use plot3() or scatter3(). It's hard to make recommendation for a 3D array in general until we know what in that would you like to display.
For true 3D rendering, see Avizo: http://www.vsg3d.com/avizo/overview

More Answers (0)

Community Treasure Hunt

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

Start Hunting!