MATLAB does not have good 3D data visualization tools. About all you can do is cutaway views with slice() or isosurface renderings with isosurface().
If your third dimension has 3 planes/slices/channels, then you can treat it as an image and use imfuse() or imshowpair().
surf() is used for 2D data, not 3D data. In other words, you'd use it when you have an array like data(row, column), not a 3D array like data(i,j,k) where you have three indexes (dimensions). surf() produces a 2.5 D surface rendering where the value at each (row,column) location is plotted as a height above a flat plane. Note: this does not mean that the data is now magically 3D - it's still 2D and has two indexes.
If you want true 3D rendering and volume visualization, way more sophisticated than MATLAB, see Avizo