30.4 散在データの補間
Delaunay 分割の重要な用途は、散在データから任意の点群への補間に使用できることです。これを行うには、既知の点群の N 単体を または を使用して計算します delaunay。delaunayn次に、目的の点が見つかった 内の単体を特定します。最後に、単体の頂点を使用して目的の点に補間します。この補間を実行する関数はgriddata、、griddata3およびですgriddatan。
:zi = グリッドデータ (x, y, z, xi, yi)
:zi = グリッドデータ (x, y, z, xi, yi, method)
:グリッドデータ[xi, yi, zi] = (…)
:vi = グリッドデータ (x, y, z, v, xi, yi, zi)
:vi = グリッドデータ (x, y, z, v, xi, yi, zi, method)
:vi = グリッドデータ (x, y, z, v, xi, yi, zi, method, options)
指定されたポイントで不規則な 2D および 3D ソース データを補間します。
2 次元補間の場合、入力xとy は関数が評価される点を定義します。入力x、y、zは同じ長さのベクトルであるか、または不等なベクトルx、yが 2 次元グリッドに拡張され 、zは XY グリッドの結果のサイズに一致する 2 次元行列になります。 z = f (x, y)meshgrid
補間点は ( xi、yi ) です。 xiが行ベクトルでyiが列ベクトルで ある場合に限り 、meshgrid補間点のメッシュを作成するために使用されます。
3D 補間の場合、入力x、y、zは関数が評価される点を定義します 。入力x、y、zは同じ長さのベクトルであるか、長さが異なる場合は の 3D グリッドに拡張されます。入力vのサイズは、ベクトルまたは行列のいずれかとして、元のデータのサイズと一致する必要があります。 v = f (x, y, z)meshgrid
オプションの入力補間法は"nearest"、 "linear"2-D データの場合、、、またはになります"v4"。方法が の場合 "nearest"、出力viは、クエリ ポイント ( xi、 yi、zi )に最も近い元のデータ ( x、y、z ) のポイントになります。方法が の場合、出力 vi は、各次元の元のソース データにある 2 つの最も近いポイント間の線形補間になります。2-D の場合のみ、 バイハーモニック スプライン補間を実装する 方法も使用できます。方法が省略されているか空の場合、デフォルトで になります 。 "linear""v4""linear"
3D 補間の場合、補間に使用される Delaunay 三角形分割を計算するときに、オプションの引数options がQhull に直接渡されます。デフォルトとさまざまな値を渡す方法の詳細については、を参照してくださいdelaunayn。
プログラミング ノート: 入力が複素数の場合、実数部と虚数部は別々に補間されます。補間は通常、ドロネー三角形分割に基づきます。入力ポイントの凸包の外側にあるクエリ値は を返しますNaN。ただし、この"v4"メソッドは三角形分割を使用せず、元のデータ (外挿) の外側にある値を返します。
参照: griddata3、griddatan、delaunay。
:vi = グリッドデータ3 (x, y, z, v, xi, yi, zi)
:vi = グリッドデータ3 (x, y, z, v, xi, yi, zi, method)
:vi = グリッドデータ3 (x, y, z, v, xi, yi, zi, method, options)
指定されたポイントで不規則な 3D ソース データを補間します。
入力x、y、z は、関数が評価される点を定義します。入力x、y、zは同じ長さのベクトルですが、長さが異なる場合は、 の 3D グリッドに拡張されます 。入力vのサイズは、ベクトルまたは行列のいずれかとして、元のデータのサイズと一致する必要があります。 v = f (x, y, z)meshgrid
補間点はxi、yi、ziで指定されます。
オプションの入力補間方法は"nearest"、または です"linear"。方法が の場合"nearest"、出力vi は、クエリポイント( xi、yi、zi ) に最も近い元のデータ ( x、y、z ) のポイントになります。方法が の場合 、出力viは、各次元の元のソース データにある 2 つの最も近いポイント間の線形補間になります。方法が省略されているか空の場合、デフォルトで になります。 "linear""linear"
オプション引数options は、補間に使用される Delaunay 三角形分割を計算するときに Qhull に直接渡されます。 delaunaynデフォルトとさまざまな値を渡す方法については、を参照してください。
プログラミング ノート: 入力が複素数の場合、実数部と虚数部は別々に補間されます。補間は Delaunay 三角形分割に基づいており、入力ポイントの凸包の外側にあるクエリ値は を返しますNaN。
「griddata」、「griddatan」、「delaunayn」も参照してください。
:yi = グリッドデータ (x, y, xi)
:yi = グリッドデータ (x, y, xi, method)
:yi = グリッドデータ (x, y, xi, method, options)
不規則なソースデータx、y をxiで指定されたポイントで 補間します。
入力x は、N 次元空間の M 個の点を表す MxN 行列です。入力y は、点xで評価される関数を表す単一値の列ベクトル (Mx1) です(つまり、 ) 。入力xi は、関数出力yi を補間によって近似する 点のリストです。次元が一致するように、 xi はxと同じ列数 ( N )を持つ必要があります。 y = fcn (x)
オプションの入力補間方法は"nearest"、または です"linear"。方法が の場合"nearest"、出力yi は、クエリ ポイント xiに最も近い元のデータx 内のポイントになります。方法が の場合、出力yi は、元のソース データ内の 2 つの最も近いポイント間の線形補間になります。方法が省略されているか空の場合、デフォルトで になります 。 "linear""linear"
オプション引数options は、補間に使用される Delaunay 三角形分割を計算するときに Qhull に直接渡されます。 delaunaynデフォルトとさまざまな値を渡す方法については、を参照してください。
例
## 不規則なデータポイントで sombrero() 関数を評価する
x = 16*ギャラリー("uniformdata", [200,1], 1) - 8;
y = 16*ギャラリー("uniformdata", [200,1], 11) - 8;
z = sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2);
## 規則的なグリッドを作成し、データを補間する
[xi, yi] = ndgrid (linspace (-8, 8, 50));
zi = グリッドデータタン ([x, y], z, [xi(:), yi(:)]);
zi = 形状変更 (zi, サイズ (xi));
## プロット結果
関数 var : clf();
plot3 (x, y, z, "または");
持続する
サーフィン(xi、yi、zi)
凡例 ("元のデータ", "補間されたデータ");
プログラミング ノート: 入力が複素数の場合、実数部と虚数部は別々に補間されます。補間は Delaunay 三角形分割に基づいており、入力ポイントの凸包の外側にあるクエリ値は を返しますNaN。2-D および 3-D データの場合、関数を使用して追加の補間方法を利用できますgriddata。
「griddata」、「griddata3」、「delaunayn」も参照してください。
関数の使用例はgriddata以下の通りである。
rand ("状態", 1);
2*rand(1000,1) - 1; ランダム乱数。
y = 2*rand (サイズ(x)) - 1;
z = sin (2*(x.^2+y.^2));
[xx,yy] = メッシュグリッド (線形空間 (-1,1,32));
zz = グリッドデータ (x、y、z、xx、yy);
メッシュ (xx, yy, zz);
ランダムに散らばった点から均一なグリッドに補間します。上記の出力は図 30.6に示されています。
グリッドデータ
図30.6:散在データから規則的なグリッドへの補間