我有一个名单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)
我该怎么画呢?
我建议你对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)
