Matlab 使用x、y、z点绘制曲面

Matlab 使用x、y、z点绘制曲面,matlab,plot,Matlab,Plot,我有一个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

我有一个
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)

很有趣。当我运行
tri=delaunay(x,y)matlab崩溃。有什么想法吗?@Macarse:这是我的例子还是你的数据?还有:什么样的碰撞?CTD?赛格断层?错误?在你身上也会发生:(我实际上不知道它抛出的是哪种类型的错误,它只是关闭。你使用的是哪个版本?@Macarse:这很奇怪(也就是说,它可能是一个Matlab错误)。它在2012a上运行,没有问题。你使用的是什么版本?我是,在macos计算机上的Matlab7.10.0(R2010a)中运行它