CloughTocher2DInterpolator#
- class scipy.interpolate.CloughTocher2DInterpolator(points, values, fill_value=nan, tol=1e-06, maxiter=400, rescale=False)#
Stückweise kubischer, C1-glatter, Krümmungsminimierender Interpolator in N=2 Dimensionen.
Hinzugefügt in Version 0.9.
- Parameter:
- pointsndarray von floats, Form (npoints, ndims); oder Delaunay
2-D Array von Koordinaten der Datenpunkte oder eine vortberechnete Delaunay-Triangulierung.
- valuesndarray von float oder complex, Form (npoints, …)
N-D Array von Datenwerten an den points. Die Länge von values entlang der ersten Achse muss gleich der Länge von points sein. Im Gegensatz zu einigen Interpolatoren kann die Interpolationsachse nicht geändert werden.
- fill_valuefloat, optional
Wert, der verwendet wird, um angeforderte Punkte außerhalb der konvexen Hülle der Eingabepunkte aufzufüllen. Wenn nicht angegeben, ist der Standardwert
nan.- tolfloat, optional
Absolute/relative Toleranz für die Gradientenschätzung.
- maxiterint, optional
Maximale Anzahl von Iterationen bei der Gradientenschätzung.
- rescalebool, optional
Skaliert die Punkte auf einen Einheitswürfel, bevor die Interpolation durchgeführt wird. Dies ist nützlich, wenn einige der Eingabedimensionen inkommensurable Einheiten haben und sich um viele Größenordnungen unterscheiden.
Methoden
__call__(xi)Interpolationsfunktion an gegebenen Punkten auswerten.
Siehe auch
griddataInterpoliert unstrukturierte D-D-Daten.
LinearNDInterpolatorStückweise lineare Interpolation in N > 1 Dimensionen.
NearestNDInterpolatorNächstliegender Nachbar-Interpolator in N > 1 Dimensionen.
interpnInterpolation auf einem regulären Gitter oder einem rechtwinkligen Gitter.
RegularGridInterpolatorInterpolator auf einem regulären oder rechtwinkligen Gitter in beliebigen Dimensionen (
interpnumschließt diese Klasse).
Hinweise
Der Interpolant wird konstruiert, indem die Eingabedaten mit Qhull [1] trianguliert werden und auf jedem Dreieck ein stückweise kubisches interpolierendes Bezier-Polynom nach einem Clough-Tocher-Schema [CT] konstruiert wird. Der Interpolant ist garantiert stetig differenzierbar.
Die Gradienten des Interpolanten werden so gewählt, dass die Krümmung der interpolierenden Oberfläche approximativ minimiert wird. Die dafür notwendigen Gradienten werden mit dem globalen Algorithmus geschätzt, der in [Nielson83] und [Renka84] beschrieben ist.
Hinweis
Für Daten auf einem regulären Gitter verwenden Sie stattdessen
interpn.Referenzen
[CT]Siehe z. B. P. Alfeld, „A trivariate Clough-Tocher scheme for tetrahedral data“. Computer Aided Geometric Design, 1, 169 (1984); G. Farin, „Triangular Bernstein-Bezier patches“. Computer Aided Geometric Design, 3, 83 (1986).
[Nielson83]G. Nielson, „A method for interpolating scattered data based upon a minimum norm network“. Math. Comp., 40, 253 (1983).
[Renka84]R. J. Renka und A. K. Cline. „A Triangle-based C1 interpolation method.“, Rocky Mountain J. Math., 14, 223 (1984).
Beispiele
Wir können Werte auf einer 2D-Ebene interpolieren
>>> from scipy.interpolate import CloughTocher2DInterpolator >>> import numpy as np >>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng() >>> x = rng.random(10) - 0.5 >>> y = rng.random(10) - 0.5 >>> z = np.hypot(x, y) >>> X = np.linspace(min(x), max(x)) >>> Y = np.linspace(min(y), max(y)) >>> X, Y = np.meshgrid(X, Y) # 2D grid for interpolation >>> interp = CloughTocher2DInterpolator(list(zip(x, y)), z) >>> Z = interp(X, Y) >>> plt.pcolormesh(X, Y, Z, shading='auto') >>> plt.plot(x, y, "ok", label="input point") >>> plt.legend(loc="upper right") >>> plt.colorbar() >>> plt.axis("equal") >>> plt.show()