Spec-Zone.ru › Octave 5

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

См. также: 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 и т.д. имеют аналогичный формат x1 и т.д., и они представляют точки, в которых интерполируется массив vi.

Если 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/v5.2.0/Multi_002ddimensional-Interpolation.html

Spec-Zone.ru

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