Ich versucheSplines mit Python (unter Verwendung von Steuer Knoten und Endpunkte)
#!/usr/bin/env python
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
# sampling
x = np.linspace(0, 10, 10)
y = np.sin(x)
# spline trough all the sampled points
tck = interpolate.splrep(x, y)
x2 = np.linspace(0, 10, 200)
y2 = interpolate.splev(x2, tck)
# spline with all the middle points as knots (not working yet)
# knots = x[1:-1] # it should be something like this
knots = np.array([x[1]]) # not working with above line and just seeing what this line does
weights = np.concatenate(([1],np.ones(x.shape[0]-2)*.01,[1]))
tck = interpolate.splrep(x, y, t=knots, w=weights)
x3 = np.linspace(0, 10, 200)
y3 = interpolate.splev(x2, tck)
# plot
plt.plot(x, y, 'go', x2, y2, 'b', x3, y3,'r')
plt.show()
des Codes in etwa wie folgt (aus Wikipedia extrahiert Bild) zu tun Der erste Teil ist der Code extrahiert aus the main reference aber es wird nicht erklärt, wie die Punkte als Steuerknoten zu verwenden.
Das Ergebnis dieses Codes ist das folgende Bild.
Die Punkte sind die Proben, die blaue Linie ist die Spline unter Berücksichtigung aller Punkte. Und die rote Linie ist diejenige, die nicht für mich funktioniert. Ich versuche zu berücksichtigen alle Zwischenpunkte als Steuer Knoten aber ich kann einfach nicht. Wenn ich versuche, knots=x[1:-1]
zu verwenden, um es funktioniert einfach nicht. Ich würde mich über jede Hilfe freuen.
Frage kurz: Wie benutze ich alle Zwischenpunkte als Kontrollknoten in der Spline-Funktion?
Hinweis: Dieses letzte Bild ist genau das, was ich brauche, und es ist der Unterschied zwischen dem, was ich habe (Spline alle Punkte) und was ich brauche (Spline mit Kontrollknoten). Irgendwelche Ideen?
Wow! Du bist die erste Person, die ich in dieser Community sehe, die NX (oder Unigrapics) benutzt. :-) – fang
Ich benutze es nur als Darstellung dessen, was ich brauche. Ich muss das in Python programmieren. =) – silgon
Was Sie tun möchten, ist die generische B-Spline-Implementierung. Wenn scipy B-Spline-Interpolation ausführen kann, müssen sie bereits eine generische B-Spline-Implementierung haben. Ob dies Clients mit der richtigen API offengelegt wird, ist jedoch unbekannt. – fang