insert_knot#
- BSpline.insert_knot(x, m=1)[источник]#
Вставить новый узел в x кратности m.
По заданным узлам и коэффициентам представления B-сплайна создать новый B-сплайн с вставленным узлом m times at point x.
- Параметры:
- xfloat
Позиция нового узла
- mint, необязательный
Количество раз для вставки заданного узла (его кратность). По умолчанию 1.
- Возвращает:
Смотрите также
Примечания
На основе алгоритмов из [1] и [2].
В случае периодического сплайна (
self.extrapolate == "periodic") должно быть как минимум k внутренних узлов t(j), удовлетворяющихt(k+1)или хотя бы k внутренних узлов t(j), удовлетворяющихx<=t(j).Эта процедура функционально эквивалентна
scipy.interpolate.insert.Добавлено в версии 1.13.
Ссылки
[1]W. Boehm, "Inserting new knots into b-spline curves.", Computer Aided Design, 12, p.199-201, 1980. DOI:10.1016/0010-4485(80)90154-2.
[2]P. Dierckx, “Curve and surface fitting with splines, Monographs on Numerical Analysis”, Oxford University Press, 1993.
Примеры
Вы можете вставить узлы в B-сплайн:
>>> import numpy as np >>> from scipy.interpolate import BSpline, make_interp_spline >>> x = np.linspace(0, 10, 5) >>> y = np.sin(x) >>> spl = make_interp_spline(x, y, k=3) >>> spl.t array([ 0., 0., 0., 0., 5., 10., 10., 10., 10.])
Вставить один узел
>>> spl_1 = spl.insert_knot(3) >>> spl_1.t array([ 0., 0., 0., 0., 3., 5., 10., 10., 10., 10.])
Вставить кратный узел
>>> spl_2 = spl.insert_knot(8, m=3) >>> spl_2.t array([ 0., 0., 0., 0., 5., 8., 8., 8., 10., 10., 10., 10.])