0

重複の可能性:
不規則な間隔のデータを使用して MATLAB でサーフ プロットを作成するにはどうすればよいですか?

私はそのようなデータを持っています:

data = [
x1 y1 z1
x2 y2 z2
...
xn yn zn
];

このデータの表面を取得する必要があります。3 行目、z - サーフェスの高さになります。しかし、X と Y は単調連続データではないため、これは機能しません。

[X Y] = meshgrid(data(:,1), data(:,2));
Z = interp2(data(:,1), data(:,2), data(:,3), X, Y);

1 行目と 2 行目のデータが単調ではないためです。

アップデート:

TriScatteredInterpはこれを行うことができます。(@Rody Oldenhuis に感謝)

F = TriScatteredInterp(data(:,1), data(:,2), data(:,3))
ti=1:10:600;
[qx qy] = meshgrid(ti, ti);
qz = F(qx, qy);
mesh(qx, qy, qz);
4

1 に答える 1

1

TriScatteredInterpを探していると思います。ドキュメントから:

F = TriScatteredInterp(X, V) は、V = F(X) の形式の曲面を (X, V) の散布データに適合させる内挿を作成します。X は mpts 行 ndim 列のサイズの行列です。ここで、mpts は点の数で、ndim は点が存在する空間の次元です (ndim は 2 または 3)。列ベクトル V は、V の長さが mpts に等しい X の値を定義します。

F = TriScatteredInterp(X, Y, V) および F = TriScatteredInterp(X, Y, Z, V) を使用すると、2 次元および 3 次元で作業するときに、データ点の位置を別の列ベクトル形式で指定できます。

于 2012-10-30T12:40:58.937 に答える