4

私はこの形式の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.

どうやって描くの?

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 に答える