Spec-Zone.ru › Octave 7

30.4 Интерполяция на рассеянных данных

Важное применение триангуляции Делоне заключается в том, что она может использоваться для интерполяции данных, рассеянных на произвольной совокупности точек. Для этого вычисляется N-симплекс известных точек с использованием delaunay или delaunayn. Затем определяются симплексы, в которых находятся искомые точки. Наконец, вершины симплексов используются для интерполяции в искомые точки. Функции, выполняющие эту интерполяцию, — это griddata, griddata3 и griddatan.

: zi = griddata (x, y, z, xi, yi) ¶
: zi = griddata (x, y, z, xi, yi, method) ¶
: [xi, yi, zi] = griddata (…) ¶
: vi = griddata (x, y, z, v, xi, yi, zi) ¶
: vi = griddata (x, y, z, v, xi, yi, zi, method) ¶
: vi = griddata (x, y, z, v, xi, yi, zi, method, options) ¶

Интерполирует нерегулярные двумерные и трехмерные исходные данные в заданных точках.

Для двумерной интерполяции входные данные x и y определяют точки, где вычисляется функция z = f (x, y). Входные данные x, y, z — это либо векторы одной длины, либо неравные векторы x, y расширяются до двумерной сетки с помощью meshgrid, а z — двумерная матрица, соответствующая размеру полученной сетки X-Y.

Точки интерполяции — (xi, yi). Если и только если xi — строка-вектор, а yi — столбец-вектор, то meshgrid будет использоваться для создания сетки точек интерполяции.

Для трехмерной интерполяции входные данные x, y и z определяют точки, где вычисляется функция v = f (x, y, z). Входные данные x, y, z — это либо векторы одной длины, либо, если они имеют различную длину, то они расширяются до трехмерной сетки с помощью meshgrid. Размер входных данных v должен соответствовать размеру исходных данных, либо как вектор, либо как матрица.

Необязательный входной параметр интерполяции method может быть "nearest", "linear", или для двумерных данных "v4". Когда метод "nearest", выход vi будет ближайшей точкой в исходных данных (x, y, z) к точке запроса (xi, yi, zi). Когда метод "linear", выход vi будет линейной интерполяцией между двумя ближайшими точками в исходных данных в каждом измерении. Только для двумерных случаев также доступен метод "v4", который реализует интерполяцию сплайном бигармонического типа. Если method опущен или пустой, он по умолчанию равен "linear".

Для трехмерной интерполяции необязательный аргумент options передаётся напрямую в Qhull при вычислении триангуляции Делоне, используемой для интерполяции. Для получения дополнительной информации о значениях по умолчанию и о том, как передавать различные значения, см. delaunayn.

Примечания по программированию: Если входные данные являются комплексными, действительные и мнимые части интерполируются по отдельности. Интерполяция обычно основана на триангуляции Делоне. Любые значения запроса за пределами выпуклой оболочки входных точек вернут NaN. Однако, метод "v4" не использует триангуляцию и вернёт значения за пределами исходных данных (экстраполяция).

См. также: griddata3, griddatan, delaunay.

: vi = griddata3 (x, y, z, v, xi, yi, zi) ¶
: vi = griddata3 (x, y, z, v, xi, yi, zi, method) ¶
: vi = griddata3 (x, y, z, v, xi, yi, zi, method, options) ¶

Интерполирует нерегулярные трехмерные исходные данные в заданных точках.

Входные данные x, y и z определяют точки, где вычисляется функция v = f (x, y, z). Входные данные x, y, z — это либо векторы одной длины, либо, если они имеют различную длину, то они расширяются до трехмерной сетки с помощью meshgrid. Размер входных данных v должен соответствовать размеру исходных данных, либо как вектор, либо как матрица.

Точки интерполяции заданы xi, yi, zi.

Необязательный входной параметр интерполяции method может быть "nearest" или "linear". Когда метод "nearest", выход vi будет ближайшей точкой в исходных данных (x, y, z) к точке запроса (xi, yi, zi). Когда метод "linear", выход vi будет линейной интерполяцией между двумя ближайшими точками в исходных данных в каждом измерении. Если method опущен или пустой, он по умолчанию равен "linear".

Необязательный аргумент options передаётся напрямую в Qhull при вычислении триангуляции Делоне, используемой для интерполяции. См. delaunayn для получения информации о значениях по умолчанию и о том, как передавать различные значения.

Примечания по программированию: Если входные данные являются комплексными, действительные и мнимые части интерполируются по отдельности. Интерполяция основана на триангуляции Делоне, и любые значения запроса за пределами выпуклой оболочки входных точек вернут NaN.

См. также: griddata, griddatan, delaunayn.

: yi = griddatan (x, y, xi) ¶
: yi = griddatan (x, y, xi, method) ¶
: yi = griddatan (x, y, xi, method, options) ¶

Интерполирует нерегулярные исходные данные x, y в точках, заданных xi.

Входные данные x — это матрица MxN, представляющая M точек в N-мерном пространстве. Входные данные y — это скалярный столбец-вектор (Mx1), представляющий функцию, вычисленную в точках x, т.е. y = fcn (x). Входные данные xi — это список точек, для которых выходная функция yi должна быть приближена с помощью интерполяции. xi должен иметь то же количество столбцов (N), что и x, чтобы размерность совпадала.

Необязательный входной параметр интерполяции method может быть "nearest" или "linear". Когда метод "nearest", выход yi будет ближайшей точкой в исходных данных x к точке запроса xi. Когда метод "linear", выход yi будет линейной интерполяцией между двумя ближайшими точками в исходных данных. Если method опущен или пустой, он по умолчанию равен "linear".

Необязательный аргумент options передаётся напрямую в Qhull при вычислении триангуляции Делоне, используемой для интерполяции. См. delaunayn для получения информации о значениях по умолчанию и о том, как передавать различные значения.

Пример

## Evaluate sombrero() function at irregular data points
x = 16*gallery ("uniformdata", [200,1], 1) - 8;
y = 16*gallery ("uniformdata", [200,1], 11) - 8;
z = sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2);
## Create a regular grid and interpolate data
[xi, yi] = ndgrid (linspace (-8, 8, 50));
zi = griddatan ([x, y], z, [xi(:), yi(:)]);
zi = reshape (zi, size (xi));
## Plot results
clf ();
plot3 (x, y, z, "or");
hold on
surf (xi, yi, zi);
legend ("Original Data", "Interpolated Data");

Примечания по программированию: Если входные данные являются комплексными, действительные и мнимые части интерполируются по отдельности. Интерполяция основана на триангуляции Делоне, и любые значения запроса за пределами выпуклой оболочки входных точек вернут NaN. Для 2D и 3D данных дополнительные методы интерполяции доступны при использовании функции griddata.

См. также: griddata, griddata3, delaunayn.

Пример использования функции griddata:

rand ("state", 1);
x = 2*rand (1000,1) - 1;
y = 2*rand (size (x)) - 1;
z = sin (2*(x.^2+y.^2));
[xx,yy] = meshgrid (linspace (-1,1,32));
zz = griddata (x, y, z, xx, yy);
mesh (xx, yy, zz);

который интерполирует данные с произвольной разбросанностью точек на равномерную сетку. Результат выше можно увидеть на рисунке 30.6.

griddata

Рисунок 30.6: Интерполяция рассеянных данных на регулярную сетку

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v7.2.0/Interpolation-on-Scattered-Data.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API