Spec-Zone.ru › Octave 9

Предыдущая: Интерполяция одного измерения, Вверх: Интерполяция [Оглавление][Индекс]

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"

Кубическая интерполяция с использованием функции свертки — метод третьего порядка с гладкой первой производной.

"spline"

Кубическая сплайновая интерполяция — гладкие первая и вторая производные на всей кривой.

extrap — скалярное число. Оно заменяет значения за пределами конечных точек на extrap. Обратите внимание, что если используется extrap, то method также должен быть указан. Если extrap опущено, и method равен "spline", то используются экстраполированные значения "spline". В противном случае значение по умолчанию для extrap для любого другого method равно "NA".

См. также: interp1, interp3, interpn, meshgrid.

: 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".

См. также: interp1, interp2, interpn, meshgrid.

: 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.

См. также: interp1, interp2, interp3, spline, ndgrid.

Существенное различие между 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.

interpn

Рисунок 29.4: Демонстрация использования interpn

Предыдущая: Интерполяция в одном измерении, Вверх: Интерполяция [Оглавление][Указатель]

© 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/v9.2.0/Multi_002ddimensional-Interpolation.html

Spec-Zone.ru

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