scipy.interpolate.

вставить#

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.

Смотрите также

BSpline.insert_knot

Примечания

На основе алгоритмов из [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.])