exponenta event banner

Интерполяция с использованием определенной триангуляции Делоне

Интерполяция ближайшего соседа с использованием запроса delaunayTriangulation

В этом примере показано, как выполнить интерполяцию ближайшего соседа для рассеянного набора точек с использованием определенной триангуляции Делоне.

Создать delaunayTriangulation набора рассеянных точек в 2-D.

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

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

Пример параболической функции V (x, y) в точках, указанных вP.

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

Определите 10 случайных точек запроса.

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

Выполнить интерполяцию ближайшего соседа на V используя триангуляцию, DT. Использовать nearestNeighbor для поиска индексов вершин ближайшего соседа, vi, для набора точек запроса, Pq. Затем проверьте конкретные значения 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

В этом примере показано, как выполнить линейную интерполяцию для рассеянного набора точек с определенной триангуляцией Делоне.

Вы можете использовать triangulation способ, pointLocation, чтобы вычислить заключительный треугольник точки запроса и величины весов вершин. Веса называются барицентрическими координатами, и они представляют собой раздел единства. То есть сумма трех весов равна 1. Интерполированное значение функции V в точке запроса является суммой взвешенных значений V в трех вершинах. Таким образом, если у функции есть ценности, V1, V2, V3 в этих трех вершинах, и веса - B1, B2, B3, то интерполированная стоимость (V1) (B1) + (V2) (B2) + (V3) (B3).

Создать delaunayTriangulation набора рассеянных точек в 2-D.

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

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

Пример параболической функции V (x, y) в точках вP.

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

Определите 10 случайных точек запроса.

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

Найдите треугольник, который заключает каждую точку запроса, используя pointLocation способ. В приведенном ниже коде ti содержит идентификаторы входящих треугольников и 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

См. также

| |

Связанные темы