1

I am trying to plot 3-D figure in matlab. I know how to use plot3 and surface. But now I have a vector and no a matrix. Actually I have $(x,y)$ and $u(x,y)$ that $u(x,y)$ is obtained after solving my problem. when I using plot with mesh, my figure is not true. please help me.

Rosa
  • 1,502

2 Answers2

2

Let's say that you put a grid in two vectors x and y, then you could do the following.

[X,Y]=meshgrid(x,y);
surf(X,Y,Z);
Learner
  • 7,278
  • Thanks. But $u$ is $78\times 1$. I constructed a $78\times 78$Matrix but my figure was not true. Am I wrong? – Rosa Jan 16 '13 at 12:41
  • @Hakha You said that U is 78x1. How could that be? If either of x or y is constant, then you do not need a 3d plot but rather a 2d plot. – Learner Jan 16 '13 at 12:43
  • I have two vector $78\times 1$ $X and ~~Y$ and by these I construct vector $u(x,y)$ – Rosa Jan 16 '13 at 12:47
  • @Hakha Ok, for that case, just look at my edit. – Learner Jan 16 '13 at 12:51
  • @Learner If x and y are vectors of length $n$ and $Z$ is and $n\times n$ matrix, then you can use 'surf(x,y,Z)'. Surf will treat this as the set of triplets (x(i), y(j), Z(i,j)). This is especially important when $n$ is large as the two matrices produces by meshgrid are much larger. – Daryl Jan 16 '13 at 21:37
1

You have two vectors that define the sample points in x and y. To get all the points in the x-y domain you can use MESHGRID, as was suggested by learner. MESHGZRID will do a Cartesian product of the two sets X and Y. Then you can use those points to generate your function $u(x,y)$. Then you can use the full domain of x and y to plot u. Showing this with an example function $u(x,y) = x + y$ (note the case difference in variable names):

[X, Y] = meshgrid(x,y);
u = X + Y;
surf(X,Y,u)