我在此表单中列出了x
,y
,z
:
-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.
我该如何画画?
答案 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)
编辑
由于您的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)