вставить#
- scipy.interpolate.вставить(x, tck, m=1, на=0)[источник]#
Вставить узлы в B-сплайн.
Наследие
Эта функция считается устаревшей и больше не будет получать обновления. Хотя в настоящее время у нас нет планов по ее удалению, мы рекомендуем, чтобы новый код использовал более современные альтернативы. В частности, мы рекомендуем создавать
BSplineобъект и использование егоinsert_knotметод.По заданным узлам и коэффициентам представления B-сплайна создать новый B-сплайн с вставленным узлом m times at point x. Это обёртка вокруг подпрограммы FORTRAN insert из FITPACK.
- Параметры:
- x (u)float
Значение узла, в которое нужно вставить новый узел. Если tck был возвращён из
splprep, тогда должны быть заданы значения параметров u.- tcka
BSplineэкземпляр или кортеж Если кортеж, то ожидается, что это будет кортеж (t,c,k), содержащий вектор узлов, коэффициенты B-сплайна и степень сплайна.
- mint, необязательный
Количество раз для вставки заданного узла (его кратность). По умолчанию 1.
- наint, необязательный
Если ненулевое, входной сплайн считается периодическим.
- Возвращает:
- экземпляр BSpline или кортеж
Новый B-сплайн с узлами t, коэффициентами c и степенью k.
t(k+1) <= x <= t(n-k), где k — степень сплайна. В случае периодического сплайна (per != 0) должно быть либо как минимум k внутренних узлов t(j), удовлетворяющихt(k+1)или хотя бы k внутренних узлов t(j), удовлетворяющихx<=t(j). Кортеж возвращается тогда и только тогда, когда входной аргумент tck является кортежем, в противном случае строится и возвращается объект BSpline.
Смотрите также
Примечания
На основе алгоритмов из [1] и [2].
Прямое манипулирование tck-кортежами не рекомендуется. В новом коде предпочтительнее использовать
BSplineобъекты, в частностиBSpline.insert_knotметод.Ссылки
[1]W. Boehm, "Inserting new knots into b-spline curves.", Computer Aided Design, 12, p.199-201, 1980.
[2]P. Dierckx, “Curve and surface fitting with splines, Monographs on Numerical Analysis”, Oxford University Press, 1993.
Примеры
Вы можете вставлять узлы в B-сплайн.
>>> from scipy.interpolate import splrep, insert >>> import numpy as np >>> x = np.linspace(0, 10, 5) >>> y = np.sin(x) >>> tck = splrep(x, y) >>> tck[0] array([ 0., 0., 0., 0., 5., 10., 10., 10., 10.])
Вставляется узел:
>>> tck_inserted = insert(3, tck) >>> tck_inserted[0] array([ 0., 0., 0., 0., 3., 5., 10., 10., 10., 10.])
Некоторые узлы вставляются:
>>> tck_inserted2 = insert(8, tck, m=3) >>> tck_inserted2[0] array([ 0., 0., 0., 0., 5., 8., 8., 8., 10., 10., 10., 10.])