Общие принципы использования
Обратите внимание: текущая версия Interpolations
поддерживает вычисление интерполяции с использованием обращений по индексам []
, но эта возможность в будущем будет упразднена. Мы настоятельно рекомендуем использовать вызовы функций ()
, как далее в этом разделе.
Для данного массива A
типа AbstractArray
создает «объект интерполяции» itp
в виде
itp = interpolate(A, options...)
где параметры options...
определяют требуемый тип интерполяции (подробное описание см. ниже). При таком синтаксисе предполагается, что выборки в A
равномерно распределены.
Чтобы вычислить интерполяцию в позиции (x, y, ...)
, достаточно сделать следующее:
v = itp(x, y, ...)
Некоторые объекты интерполяции поддерживают вычисление градиента, который можно получить так:
g = Interpolations.gradient(itp, x, y, ...)
либо так:
Interpolations.gradient!(g, itp, x, y, ...)
где g
— предварительно размещенный в памяти вектор.
Некоторые объекты интерполяции поддерживают вычисление гессиана, который можно получить так:
h = Interpolations.hessian(itp, x, y, ...)
или так:
Interpolations.hessian!(h, itp, x, y, ...)
где h
— предварительно размещенная в памяти матрица.
Элементы A
могут быть любого типа, поддерживающего операции сложения и умножения. Примерами могут служить скалярные значения, такие как Float64
, Int
и Rational
, а также типы, состоящие из нескольких значений, например цветовые векторы RGB
.
Позиции (x, y, ...)
представляют собой кортежи из n чисел. Обычно они состоят из вещественных значений (не обязательно целочисленных), но также могут содержать такие типы, как DualNumbers, если необходимо проверить вычисленное значение градиента. (Проверять градиенты можно также с помощью пакета ForwardDiff.) Можно также использовать объекты итераторов Julia. Например, следующий код:
function ongrid!(dest, itp)
for I in CartesianIndices(itp)
dest[I] = itp(I)
end
end
сохраняет значение на сетке в каждой точке сетки itp
в выходном объекте dest
. Наконец, благодаря правилам индексирования Julia можно также использовать
fine = itp(range(1,stop=10,length=1001), range(1,stop=15,length=201))
Существует также сокращенная форма записи: Удобная нотация.