Документация Engee

Экстраполяция

Вызов extrapolate определяет, что происходит при попытке обращения по индексу к объекту интерполяции с координатами, находящимися за его границами по любому измерению. Реализованы следующие граничные условия: Throw, Flat, Line, Periodic и Reflect. Вы также можете передать константу, которая будет использоваться как «значение-заполнитель», возвращаемое при выходе вычислений за границы. Periodic и Reflect требуют наличия метода Base.mod для работы с используемыми индексами.

Примеры:

itp = interpolate(1:7, BSpline(Linear()))
etpf = extrapolate(itp, Flat())   # возвращает 1 для левого края и 7 для правого края
etp0 = extrapolate(itp, 0)        # возвращает 0 для любых точек за пределами диапазона [1,7]

Периодическая экстраполяция

Для любых типов интерполяции B-сплайнами, применяемых к периодическим данным с равномерной выборкой, можно выполнять периодическую экстраполяцию. При использовании граничного условия Periodic(OnCell()) в interpolate не требуется включать периодический образ начальной точки выборки.

Примеры:

f(x) = sin((x-3)*2pi/7 - 1)
A = Float64[f(x) for x in 1:7] # Периодический образ не включается

# Constant(Periodic())) — это псевдоним для Constant{Nearest}(Periodic(OnCell()))
itp0 = interpolate(A, BSpline(Constant(Periodic())))
# Linear(Periodic())) — это псевдоним для Linear(Periodic(OnCell()))
itp1 = interpolate(A, BSpline(Linear(Periodic())))
itp2 = interpolate(A, BSpline(Quadratic(Periodic(OnCell()))))
itp3 = interpolate(A, BSpline(Cubic(Periodic(OnCell()))))

etp0 = extrapolate(itp0, Periodic())
etp1 = extrapolate(itp1, Periodic())
etp2 = extrapolate(itp2, Periodic())
etp3 = extrapolate(itp3, Periodic())