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, предполагается двумерная область
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"-
Кубическая интерполяция с использованием функции свёрточного ядра — метод третьего порядка с непрерывной первой производной.
"spline"Кубическая сплайн-интерполяция — первая и вторая производные непрерывны на всей кривой.
extrap — скалярное число. Оно заменяет значения за пределами конечных точек на extrap. Обратите внимание: если используется extrap, необходимо также указать method. Если extrap не задано, а method равно
"spline", используются экстраполированные значения"spline". В противном случае для любого другого значения method по умолчанию extrap равно"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, предполагается трёхмерная область
x = 1:columns (v), y = 1:rows (v), z = 1:size (v, 3). Это позволяет экономить память, если сетка регулярна и расстояние между точками не имеет значения.Если функция вызвана с одной матрицей опорных данных v и значением уточнения n, интерполяция выполняется по трёхмерной сетке, в которой каждый исходный интервал рекурсивно подразделяется 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". В противном случае для любого другого значения method по умолчанию extrapval равно"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". В противном случае для любого другого значения method по умолчанию extrapval равно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–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/Multi_002ddimensional-Interpolation.html