我有一个 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.
我应该怎么画呢?
最佳答案
我建议您对 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)
关于matlab - 使用 x、y、z 点绘制曲面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272682/