4

我有一个,的列表x,格式如下:yz

   -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.

我应该怎么画?

4

1 回答 1

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)

在此处输入图像描述

于 2012-04-22T23:06:23.987 回答