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"не использует триангуляцию и вернет значения за пределами исходных данных (экстраполяция).
- : 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.
- : 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. Для двумерных и трехмерных данных дополнительные методы интерполяции доступны с использованием функцииgriddata.
Пример использования функции 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.
Рисунок 30.6: Интерполяция с разбросанными данных на регулярную сетку
© 1996–2023 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/v8.1.0/Interpolation-on-Scattered-Data.html