scipy.interpolate.BSpline.

insert_knot#

BSpline.insert_knot(x, m=1)[Quelle]#

Fügt einen neuen Knoten bei x mit der Vielfachheit m ein.

Erstellt aus den gegebenen Knoten und Koeffizienten einer B-Spline-Darstellung einen neuen B-Spline, bei dem m mal ein Knoten an der Stelle x eingefügt wurde.

Parameter:
xfloat

Die Position des neuen Knotens

mint, optional

Die Anzahl, wie oft der gegebene Knoten eingefügt werden soll (seine Vielfachheit). Standard ist 1.

Rückgabe:
splBSpline Objekt

Ein neues BSpline Objekt mit dem eingefügten neuen Knoten.

Hinweise

Basierend auf Algorithmen aus [1] und [2].

Bei einem periodischen Spline (self.extrapolate == "periodic") muss es entweder mindestens k innere Knoten t(j) geben, die t(k+1)<t(j)<=x erfüllen, oder mindestens k innere Knoten t(j), die x<=t(j)<t(n-k) erfüllen.

Diese Routine ist funktional äquivalent zu scipy.interpolate.insert.

Hinzugefügt in Version 1.13.

Referenzen

[1]

W. Boehm, „Inserting new knots into b-spline curves.“, Computer Aided Design, 12, S.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.

Beispiele

Sie können Knoten in einen B-Spline einfügen

>>> 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.])

Einfacher Knoten einfügen

>>> spl_1 = spl.insert_knot(3)
>>> spl_1.t
array([ 0.,  0.,  0.,  0.,  3.,  5., 10., 10., 10., 10.])

Mehrfacher Knoten einfügen

>>> spl_2 = spl.insert_knot(8, m=3)
>>> spl_2.t
array([ 0.,  0.,  0.,  0.,  5.,  8.,  8.,  8., 10., 10., 10., 10.])