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:
Siehe auch
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, diet(k+1)<t(j)<=xerfüllen, oder mindestens k innere Knoten t(j), diex<=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.])