Экстраполяция
Вызов 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())