29.2 Многомерная интерполяция
В Octave есть три функции многомерной интерполяции с похожими возможностями. Методы, использующие триангуляцию Делоне, описаны в Интерполяция на рассеянных данных.
- : zi = interp2 (x, y, z, xi, yi)
- : zi = interp2 (z, xi, yi)
- : zi = interp2 (z, n)
- : zi = interp2 (z)
- : zi = interp2 (…, method)
- : zi = interp2 (…, method, extrap)
-
Двумерная интерполяция.
Интерполирует исходные данные x, y, z, чтобы определить zi в координатах xi, yi. Исходные данные x, y могут быть матрицами, как возвращаемыми
meshgrid, в этом случае размеры x, y и z должны быть равны. Если x, y представляют векторы, описывающие сетку, тоlength (x) == columns (z)иlength (y) == rows (z). В любом случае входные данные должны быть строго монотонными.Если вызов осуществляется без x, y и только с одной матрицей исходных данных z, то предполагается 2-мерная область
x = 1:columns (z), y = 1:rows (z). Это экономит память, если сетка регулярная и расстояние между точками не важно.Если вызов осуществляется с единственной матрицей исходных данных z и значением уточнения n, то выполняется интерполяция на сетке, где каждый исходный интервал был рекурсивно разделен на n частей. Это приводит к
2^n-1дополнительным точкам для каждого интервала в исходной сетке. Если n опущено, используется значение 1. Например, интервал [0,1] сn==2приводит к уточнённому интервалу с точками [0, 1/4, 1/2, 3/4, 1].Метод интерполяции method может быть одним из:
"nearest"-
Возвращает ближайшего соседа.
-
"linear"(по умолчанию) -
Линейная интерполяция от ближайших соседей.
"pchip"-
Кубический эрмитов полином – сохранение формы интерполяции с гладкой первой производной.
"cubic"-
Кубическая интерполяция (та же, что и
"pchip"). "spline"Кубическая сплайн-интерполяция – гладкие первая и вторая производные по всей кривой.
extrap – скалярное число. Оно заменяет значения за пределами конечных точек на extrap. Обратите внимание, что если extrap используется, method также должен быть указан. Если extrap опущено, а method –
"spline", то используются экстрополированные значения"spline". В противном случае значение extrap по умолчанию для любого другого method –"NA".
- : vi = interp3 (x, y, z, v, xi, yi, zi)
- : vi = interp3 (v, xi, yi, zi)
- : vi = interp3 (v, n)
- : vi = interp3 (v)
- : vi = interp3 (…, method)
- : vi = interp3 (…, method, extrapval)
-
Трехмерная интерполяция.
Интерполирует исходные данные x, y, z, v, чтобы определить vi в координатах xi, yi, zi. Исходные данные x, y, z могут быть матрицами, как возвращаемыми
meshgrid, в этом случае размеры x, y, z и v должны быть равны. Если x, y, z представляют векторы, описывающие кубическую сетку, тоlength (x) == columns (v),length (y) == rows (v), иlength (z) == size (v, 3). В любом случае входные данные должны быть строго монотонными.Если вызов осуществляется без x, y, z и только с одной матрицей исходных данных v, то предполагается 3-мерная область
x = 1:columns (v), y = 1:rows (v), z = 1:size (v, 3). Это экономит память, если сетка регулярная и расстояние между точками не важно.Если вызов осуществляется с единственной матрицей исходных данных v и значением уточнения n, то выполняется интерполяция на 3-мерной сетке, где каждый исходный интервал был рекурсивно разделен на n частей. Это приводит к
2^n-1дополнительным точкам для каждого интервала в исходной сетке. Если n опущено, используется значение 1. Например, интервал [0,1] сn==2приводит к уточнённому интервалу с точками [0, 1/4, 1/2, 3/4, 1].Метод интерполяции method может быть одним из:
"nearest"-
Возвращает ближайшего соседа.
-
"linear"(по умолчанию) -
Линейная интерполяция от ближайших соседей.
"cubic"-
Кубический эрмитов полином – сохранение формы интерполяции с гладкой первой производной (еще не реализовано).
"spline"Кубическая сплайн-интерполяция – гладкие первая и вторая производные по всей кривой.
extrapval – скалярное число. Оно заменяет значения за пределами конечных точек на extrapval. Обратите внимание, что если extrapval используется, method также должен быть указан. Если extrapval опущено, а method –
"spline", то используются экстрополированные значения"spline". В противном случае значение extrapval по умолчанию для любого другого method –"NA".
- : vi = interpn (x1, x2, …, v, y1, y2, …)
- : vi = interpn (v, y1, y2, …)
- : vi = interpn (v, m)
- : vi = interpn (v)
- : vi = interpn (…, method)
- : vi = interpn (…, method, extrapval)
-
Выполняет n-мерную интерполяцию, где n — не меньше двух.
Каждый элемент n-мерного массива v представляет значение в позиции, заданной параметрами x1, x2, …, xn. Параметры x1, x2, …, xn представляют собой либо n-мерные массивы того же размера, что и массив v в формате
"ndgrid", либо векторы.Параметры y1, y2, …, yn представляют точки, в которых интерполируется массив vi. Они могут быть векторами одной длины и ориентации, в таком случае они интерпретируются как координаты рассеянных точек. Если они имеют векторы разной ориентации или длины, они используются для формирования сетки в формате
"ndgrid". Они также могут быть n-мерными массивами равного размера.Если x1, …, xn опушены, они предполагаются
x1 = 1 : size (v, 1), и т. д. Если указан m, интерполяция добавляет точку посередине между каждой точкой интерполяции. Этот процесс повторяется m раз. Если указан только v, m считается равным1.Метод интерполяции method может быть одним из:
"nearest"-
Возвращает ближайшего соседа.
-
"linear"(по умолчанию) -
Линейная интерполяция от ближайших соседей.
"pchip"-
Кубический эрмитов полином – сохранение формы интерполяции с гладкой первой производной (еще не реализовано).
"cubic"-
Кубическая интерполяция (та же, что и
"pchip"[еще не реализовано]). "spline"Кубическая сплайн-интерполяция – гладкие первая и вторая производные по всей кривой.
Метод по умолчанию –
"linear".extrapval – скалярное число. Оно заменяет значения за пределами конечных точек на extrapval. Обратите внимание, что если extrapval используется, method также должен быть указан. Если extrapval опущено, а method –
"spline", то используются экстрополированные значения"spline". В противном случае значение extrapval по умолчанию для любого другого method –"NA".
Существенное различие между interpn и другими двумя функциями многомерной интерполяции заключается в том, как обрабатываются измерения. Для interp2 и interp3, ось y рассматривается как столбцы матрицы, а ось x соответствует строкам массива. Поскольку Octave индексирует массивы в порядке следования столбцов, первое измерение любого массива – это столбцы, поэтому interpn фактически меняет местами измерения ‘x’ и ‘y’. Рассмотрим пример:
x = y = z = -1:1; f = @(x,y,z) x.^2 - y - z.^2; [xx, yy, zz] = meshgrid (x, y, z); v = f (xx,yy,zz); xi = yi = zi = -1:0.1:1; [xxi, yyi, zzi] = meshgrid (xi, yi, zi); vi = interp3 (x, y, z, v, xxi, yyi, zzi, "spline"); [xxi, yyi, zzi] = ndgrid (xi, yi, zi); vi2 = interpn (x, y, z, v, xxi, yyi, zzi, "spline"); mesh (zi, yi, squeeze (vi2(1,:,:)));
где vi и vi2 идентичны. Изменение местами измерений обрабатывается в функциях meshgrid и ndgrid соответственно. Результат этого кода показан на рисунке 29.4.
Рисунок 29.4: Демонстрация использования interpn
© 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/v6.4.0/Multi_002ddimensional-Interpolation.html