Spec-Zone.ru › Octave 8

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/v8.1.0/Multi_002ddimensional-Interpolation.html

Spec-Zone.ru

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