在matlab / freemat中绘制3d表面图

时间:2014-01-06 02:30:19

标签: matlab freemat

我想问一下3d表面绘图。因为我是新手,我只是在尝试。基本上,我有3个参数,x,y,z,我有实验数据的值,我想绘制它们。因此,我试过,

x= [6 7 8 9 10 11 12 1]
x =
  6  7  8  9 10 11 12  1
--> y=[2 3 4 5 6 1 6 8]
y =
 2 3 4 5 6 1 6 8
--> z= [3 4 5 6 7 8 9 10]
z =
  3  4  5  6  7  8  9 10
meshgrid(x,y,z)
surf(x,y,z)

情节窗口确实出现但没有图表。我的方法错了吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

听起来你需要从plot3开始,因为你只是描述3D中的一组点,而不是网格或曲面上的点。看看这是否符合您的要求。

x = [6 7 8 9 10 11 12 1];
y = [2 3 4 5 6 1 6 8];
z = [3 4 5 6 7 8 9 10];
plot3(x, y, z, '.');

答案 1 :(得分:0)

这是我绘制曲面的方法:

%define the data 
x=[6 7 8 9 10 11 12 1 6 7 8 9 10 11 12 1];
y=[2 3 4 5 6 1 6 8 2 3 4 5 6 1 6 8];
z=[3 4 5 6 7 8 9 10 3 4 5 6 7 8 9 10];

%Create 3D surface
[X,Y]=meshgrid(x,y);
Z=griddata(x,y,z,X,Y);

%Plot the surface
surface(X,Y,Z);
shading interp %makes it look sexy
%xlim([])
%ylim([])

有时我会使用轴石灰来使绘图看起来更漂亮(消除不需要的白色区域);对于这组数据,我可以使用xlim([6 11])和ylim([2 6])。