用x,y,z点绘制曲面

时间:2012-04-22 22:29:36

标签: matlab plot

我在此表单中列出了xyz

   -0.2894    1.2835    0.5405
   -0.8171   -0.3034    0.1824
    2.7864    0.5506    0.0037

我可以使用plot3(x,y,z, '*')绘图,但效果很好。

现在我想绘制一个表面,但是当我这样做时:

>> surf(x,y,z)
??? Error using ==> surf at 78
Z must be a matrix, not a scalar or vector.

我该如何画画?

1 个答案:

答案 0 :(得分:7)

我建议你对x,y值进行Delaunay三角剖分,然后使用z作为曲面图的高度:

x = randn(100,1);
y = randn(100,1);
z = (exp(-x.^2-y.^2));
tri = delaunay(x,y);
trisurf(tri,x,y,z)

enter image description here

编辑

由于您的Matlab版本似乎有问题,可以选择以下方法:使用griddata将数据插入到常规网格中,以便您可以使用surf进行绘图。

x = randn(100,1);
y = randn(100,1);
z = (exp(-x.^2-y.^2));
[xx,yy]=meshgrid(-2:0.1:2,-2:0.1:2);
zz = griddata(x,y,z,xx,yy);
dfig,surf(xx,yy,zz)

enter image description here