用x,y,z点绘制曲面

Mac*_*rse 4 matlab plot

我有一个名单x,y,z以这种形式:

   -0.2894    1.2835    0.5405
   -0.8171   -0.3034    0.1824
    2.7864    0.5506    0.0037
Run Code Online (Sandbox Code Playgroud)

我可以使用绘图plot3(x,y,z, '*'),它工作正常.

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

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

我该怎么画呢?

Jon*_*nas 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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑

由于您的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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述