Hello, I have set of data x,y and z. When I plotted the data by using command 'plot3', there is no problem. However, when I tried to plot it by using command 'mesh', there is problem occured:
Z must be a matrix, not a scalar or vector
Can anyone help me to plot the surface of 3D plot?
No products are associated with this question.
Going from the error, it seems that you are trying to use mesh for a 1D array (Z in your case). Mesh expects the 'Z' to be a 2D matrix containing all the values of the function, i.e. Z = f(x,y) as in the example from http://www.mathworks.com/help/matlab/ref/mesh.html :
figure; [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(Z);
So from http://www.mathworks.com/help/matlab/ref/plot3.html : plot3(X1,Y1,Z1,...), where X1, Y1, Z1 are vectors or matrices, plots one or more lines in three-dimensional space through the points whose coordinates are the elements of X1, Y1, and Z1.
whereas from http://www.mathworks.com/help/matlab/ref/mesh.html : mesh(X,Y,Z) draws a wireframe mesh with color determined by Z, so color is proportional to surface height. If X and Y are vectors, length(X) = n and length(Y) = m, where [m,n] = size(Z).
You got to make sure that size(Z) is [m,n]!
A bit more detail would help in giving a precise answer. Including some example data or an example of a surface could assist folks in answering.
Generally for calling
there are a few possibilities.
(x(i), y(j)) for all i, j in range,
are taken to be your grid points. The value of the surface is then given by z(i,j) so that the points plotted are:
(x(i), y(j), z(i,j))
(x(i,j), y(i,j), z(i,j))
In each case, the vertical values in "z" need to be a matrix with one value per grid point in order to provide the right number of values.
A little example:
x = linspace(-10,10,100); y = linspace(-10,10,100); z = repmat(x,[100 1]); z = z.^2; mesh(x,y,z);
Well, just a bit description: I have these points x, y, z points saying for example at x=2.5 and y=12, then z is 3:
x=[2.5 4 6 18 9]; y=[12 3 7.5 1 10]; z=[3 15 16 8 11.5];
and i want to create a 3D mesh.
I am able to create plot3 and/or scatter3 but not mesh :( please help! Thanks again!