Spec-Zone.ru › Octave 7

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-D область 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".

См. также: 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-D область x = 1:columns (v), y = 1:rows (v), z = 1:size (v, 3). Это экономит память, если сетка регулярна, и расстояние между точками не важно.

Если вызывается с одной матрицей справочных данных v и значением уточнения n, то выполняется интерполяция по 3-D сетке, где каждый исходный интервал был рекурсивно поделен 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–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/v7.2.0/Multi_002ddimensional-Interpolation.html

Spec-Zone.ru

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