你这个问题我感觉还是没说清楚啊!如果x,y,z都是40x1的矩阵,那应该只能画曲线而不是曲面吧!!
meshgrid是生成栅格点数据,mesh是画网格面,surf是画表面图。
画三维曲线应该是plot3(x,y,z)
_____________________________________
看了下楼下说的,我发现我误解了。
mesh,surf都是在规则网格数据下作图,而混乱的散点网格作图,可以用trimesh,trisurf.
例子如下:
x=10*rand(1000,1)-5;
y=10*rand(1000,1)-5;
%x、y是随机的,所以不等距。
z=x.^2-y.^2;
%这里我用的是马鞍面的函数式,
tri
=
delaunay(x,y);
%这一句相当于以前的meshgrid造网格,不过是不规则网格
trimesh(tri,x,y,z)
%这里trimesh也可以改为trisurf
这个是三角插值作图。
matlab画图x=-1:0.1:1;
y=-2*pi:0.1:2*pi;
[X,Y]=meshgrid(x,y);
Z=exp(2*X).*cos(Y);
figure(1)
plot3(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维曲线图plot3')
figure(2)
mesh(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维网格图mesh')
figure(3)
surf(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维曲面图surf')
或者
x=-1:0.1:1;
y=-2*pi:0.1:2*pi;
[X,Y]=meshgrid(x,y);
Z=exp(2*X).*cos(Y);
subplot(131)
plot3(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维曲线图plot3')
subplot(132)
mesh(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维网格图mesh')
subplot(133)
surf(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('z')
title('三维曲面图surf')
legend只能对一个坐标轴里的多条曲线做说明,而你要求做的图显然需要3个不同的坐标轴,即不在同一坐标轴内,所以没法用legend对他们做说明。
事实上label和title已经把图形的意义说的很清楚了,也没必要再说明什么了。
请教MATLAB 画三维直线图
可以用plot3函数来画。它与plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)
例如:
t=0:pi/100:20*pi;
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z);
title('Line in 3-
D Space');
xlabel('X');ylabel('Y');zlabel('Z');
Matlab中已知数据怎么画曲线二维数据的分布曲线可以用函数plot(x,y)画出分布曲线。
例如有数据
x=0:0.1:2*pi;y=sin(x);
plot(x,y);
三维的数据的分布曲线可以用函数plot3(x,y,z)画出分布曲线。
例如:
t=0:0.1:2*pi;x=cos(t);y=sin(t);z=t;
plot3(x,y,z);;
plot(x,y)函数中,x为二维数据点的横坐标,y为二维数据点的纵坐标。
plot3(x,y,z);函数中,x,y,z分别为三维数据的3个坐标数据。
以上文章内容就是对plot3和plot3和mesh的区别的介绍到此就结束了,希望能够帮助到大家?如果你还想了解更多这方面的信息,记得收藏关注本站。