working of surf function

1 次查看(过去 30 天)
RajyaLakshmi
RajyaLakshmi 2015-6-24
编辑: Stephen23 2015-6-24
Plot the following surfaces using the surf function:
a) Sine surface
x = sin(u)
y = sin(v)
z = sin(u +v )
where 0 <= u <= 2*pi, and 0 <=v <= 2*pi.
I executed the following code :
u=[0:pi/4:2*pi];
v=[0:pi/4:2*pi];
x=sin(u);
y=sin(v);
z=sin(u+v);
surf(x,y,z);colorbar;xlabel('sin(u)');ylabel('sin(v)');zlabel('sin(u+v)');title('Sine Surface');
After executing the above code I got the following error
Error using surf (line 75) Z must be a matrix, not a scalar or vector
Here Z is a matrix of size [1 9]. can anyone tell me the reason:
  1 个评论
Jan
Jan 2015-6-24
I've edited the question to format the code. Please use the "{} Code" button for posting code. Thanks.

请先登录,再进行评论。

回答(2 个)

Stephen23
Stephen23 2015-6-24
编辑:Stephen23 2015-6-24
surf needs matrices to plot this data, so you need to convert the two vectors u and v into matrices... this is exactly what meshgrid is for:
u = 0:pi/4:2*pi;
v = 0:pi/4:2*pi;
[uM,vM] = meshgrid(u,v);
I am sure that you can manage the rest, you just need to use the uM and vM values instead of u and v. You might also like to decrease the step size: around one twentieth looks nice.

Jan
Jan 2015-6-24
Please read the documentation of the surf command. There you find working examples, which explain, that Z must be a matrix of the size length(X)*length(Y):
If X and Y are vectors, length(X) = n and length(Y) = m, where [m,n] = size(Z)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by