最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

特定のドローネ三角形分割を使用した内挿

delaunayTriangulation クエリを使用した最近傍内挿

この例では、特定のドローネ三角形分割を使用して、散布点の集合で最近傍内挿を実行する方法を説明します。

2 次元で散布点の集合の delaunayTriangulation を作成します。

P = -2.5 + 5*gallery('uniformdata',[50 2],0);
DT = delaunayTriangulation(P)
DT = 
  delaunayTriangulation with properties:

              Points: [50x2 double]
    ConnectivityList: [87x3 double]
         Constraints: []

P で指定された点で放物線関数 V(x,y) をサンプリングします。

V = P(:,1).^2 + P(:,2).^2;

無作為に 10 個のクエリ点を定義します。

Pq = -2 + 4*gallery('uniformdata',[10 2],1);

三角形分割 DT を使用して、V で最近傍内挿を実行します。nearestNeighbor を使用して、クエリ点の集合 Pq の最近傍頂点のインデックス vi を求めます。次に、このインデックスにおける V の特定の値を調べます。

vi = nearestNeighbor(DT,Pq);
Vq = V(vi)
Vq = 10×1

    5.3163
    0.3453
    4.3026
    1.2579
    1.9435
    5.9194
    3.9030
    0.4172
   11.7282
    0.8641

delaunayTriangulation クエリを使用した線形内挿

この例では、特定のドローネ三角形分割を使用して、散布点の集合で線形内挿を実行する方法を説明します。

triangulation メソッド pointLocation を使用して、クエリ点を囲む三角形と、頂点重みの大きさを計算します。この重みは重心座標と呼ばれ、1 の分割を表します。すなわち、3 つの重みの和は 1 になります。クエリ点における関数 V の内挿値は、3 つの頂点における V の重み値の和です。つまり、この関数が 3 つの頂点において V1、V2、V3 の値をもち、その重みがそれぞれ B1、B2、B3 であった場合、内挿値は (V1)(B1) + (V2)(B2) + (V3)(B3) となります。

2 次元で散布点の集合の delaunayTriangulation を作成します。

P = -2.5 + 5*gallery('uniformdata',[50 2],0);
DT = delaunayTriangulation(P)
DT = 
  delaunayTriangulation with properties:

              Points: [50x2 double]
    ConnectivityList: [87x3 double]
         Constraints: []

P の点で放物線関数 V(x,y) をサンプリングします。

V = P(:,1).^2 + P(:,2).^2;

無作為に 10 個のクエリ点を定義します。

Pq = -2 + 4*gallery('uniformdata',[10 2],1);

pointLocation メソッドを使用して、各クエリ点を囲む三角形を求めます。以下のコードでは、ti には点を囲む三角形の ID が含まれ、bc には各三角形に関連付けられた重心座標が含まれます。

[ti,bc] = pointLocation(DT,Pq);

点を囲む各三角形の頂点で、V(x,y) の値を求めます。

triVals = V(DT(ti,:));

ドット積を使用して V(x,y) の重み値の和を計算します。

Vq = dot(bc',triVals')'
Vq = 10×1

    5.9456
    1.1222
    4.7963
    0.9373
    2.3533
    3.4219
    2.3104
    0.7728
    8.0479
    1.0886

参考

| |

関連するトピック