Main Content

특정 들로네 삼각분할(Delaunay Triangulation)을 사용한 보간

delaunayTriangulation 쿼리를 사용한 최근접이웃 보간

이 예제에서는 특정 들로네 삼각분할을 사용하여 산점 데이터 세트에 대해 최근접이웃 보간을 수행하는 방법을 보여줍니다.

2차원에서 산점 데이터 세트의 delaunayTriangulation을 만듭니다.

rng('default')
P = -2.5 + 5*rand([50 2]);
DT = delaunayTriangulation(P)
DT = 
  delaunayTriangulation with properties:

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

P에 지정된 점에서 포물선 함수 V(x,y)를 샘플링합니다.

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

10개의 쿼리 점을 임의로 정의합니다.

Pq = -2 + 4*rand([10 2]);

삼각분할 DT를 사용하여 V에 대해 최근접이웃 보간을 수행합니다. nearestNeighbor를 사용하여 쿼리 점 집합 Pq에 대해 최근접이웃 꼭짓점의 인덱스 vi를 구합니다. 그런 다음, 인덱스에서 V의 특정 값을 검토합니다.

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

    2.7208
    3.7792
    1.8394
    3.5086
    1.8394
    3.5086
    1.4258
    5.4053
    4.0670
    0.5586

delaunayTriangulation 쿼리를 사용한 선형(Linear) 보간

이 예제에서는 특정 들로네 삼각분할을 사용하여 산점 데이터 세트에 대해 선형 보간을 수행하는 방법을 보여줍니다.

triangulation 방법인 pointLocation을 사용하여 쿼리 점을 둘러싸는 삼각형과 꼭짓점 가중치의 크기를 계산할 수 있습니다. 가중치는 무게중심 좌표라고 하며, 1을 분할한 것을 나타냅니다. 즉, 세 개 가중치의 합은 1이 됩니다. 쿼리 점에서의 함수 V의 보간 값은 세 개의 꼭짓점에서의 V의 가중 값의 합입니다. 즉, 함수가 세 개의 꼭짓점에서 값 V1, V2, V3을 가지며 가중치가 B1, B2, B3인 경우 보간 값은 (V1)(B1) + (V2)(B2) + (V3)(B3)이 됩니다.

2차원에서 산점 데이터 세트의 delaunayTriangulation을 만듭니다.

rng('default')
P = -2.5 + 5*rand([50 2]);
DT = delaunayTriangulation(P)
DT = 
  delaunayTriangulation with properties:

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

P의 점에서 포물선 함수 V(x,y)를 샘플링합니다.

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

10개의 쿼리 점을 임의로 정의합니다.

Pq = -2 + 4*rand([10 2]);

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

    2.2736
    4.2596
    2.1284
    3.5372
    4.6232
    2.1797
    1.2779
    4.7644
    3.6311
    1.2196

참고 항목

| |

관련 항목