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) -
Интерполирует нерегулярные исходные данные в 2-D и 3-D в заданных точках.
Для двумерной интерполяции входные данные 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 будет содержать значение ближайшей к точке запроса (xi, yi, zi) точки исходных данных (x, y, z). Если выбран метод"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 будет содержать значение ближайшей к точке запроса (xi, yi, zi) точки исходных данных (x, y, z). Если выбран метод"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 будет содержать значение ближайшей к точке запроса xi точки исходных данных x. Если выбран метод"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–2026 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/v9.4.0/Interpolation-on-Scattered-Data.html