LSQSphereBivariateSpline#
- class scipy.interpolate.LSQSphereBivariateSpline(theta, phi, r, tt, tp, w=None, eps=1e-16)[Quelle]#
Gewichtete Bivariaten Spline-Approximation nach der Methode der kleinsten Quadrate in Kugelkoordinaten.
Bestimmt eine glättende bikubische Spline entsprechend einem gegebenen Satz von Knoten in den theta und phi Richtungen.
Hinzugefügt in Version 0.11.0.
- Parameter:
- theta, phi, rarray_like
1-D Sequenzen von Datenpunkten (Reihenfolge ist nicht wichtig). Koordinaten müssen in Radiant angegeben werden. Theta muss im Intervall
[0, pi]liegen, und phi muss im Intervall[0, 2pi]liegen.- tt, tparray_like
Streng geordnete 1-D Sequenzen von Knotenkoordinaten. Koordinaten müssen
0 < tt[i] < pi,0 < tp[i] < 2*pierfüllen.- warray_like, optional
Positive 1-D Sequenz von Gewichten, mit der gleichen Länge wie theta, phi und r.
- epsfloat, optional
Ein Schwellenwert zur Bestimmung des effektiven Rangs eines überbestimmten linearen Gleichungssystems. eps sollte einen Wert im offenen Intervall
(0, 1)haben, der Standardwert ist 1e-16.
Methoden
__call__(theta, phi[, dtheta, dphi, grid])Evaluieren des Splines oder seiner Ableitungen an gegebenen Positionen.
ev(theta, phi[, dtheta, dphi])Evaluieren des Splines an Punkten
Gib die Spline-Koeffizienten zurück.
Gibt ein Tupel (tx,ty) zurück, wobei tx,ty die Knotenpositionen des Splines bezüglich der x- und y-Variablen enthalten.
Gibt die gewichtete Summe der quadrierten Residuen der Spline-Approximation zurück: sum ((w[i]*(z[i]-s(x[i],y[i])))**2,axis=0)
partial_derivative(dx, dy)Konstruiert einen neuen Spline, der eine partielle Ableitung dieses Splines darstellt.
Siehe auch
BivariateSplineEine Basisklasse für bivariate Splines.
UnivariateSplineEin geglätteter univariater Spline zur Anpassung an eine gegebene Menge von Datenpunkten.
SmoothBivariateSplineEin glättender bivariate Spline durch die gegebenen Punkte
LSQBivariateSplineEin bivariate Spline unter Verwendung von gewichteter Kleinster-Quadrate-Anpassung
RectSphereBivariateSplineEin bivariate Spline über ein rechteckiges Gitter auf einer Kugel
SmoothSphereBivariateSplineEin glättender bivariate Spline in Kugelkoordinaten
RectBivariateSplineein bivariate Spline über ein rechteckiges Gitter.
bisplrepEine Funktion zum Finden einer B-Spline-Darstellung einer Oberfläche im Bivariaten
bisplevEine Funktion zur Auswertung eines B-Splines im Bivariaten und seiner Ableitungen
Hinweise
Für weitere Informationen siehe die FITPACK Seite über diese Funktion.
Beispiele
Angenommen, wir haben globale Daten auf einem groben Gitter (die Eingabedaten müssen nicht auf einem Gitter liegen)
>>> from scipy.interpolate import LSQSphereBivariateSpline >>> import numpy as np >>> import matplotlib.pyplot as plt
>>> theta = np.linspace(0, np.pi, num=7) >>> phi = np.linspace(0, 2*np.pi, num=9) >>> data = np.empty((theta.shape[0], phi.shape[0])) >>> data[:,0], data[0,:], data[-1,:] = 0., 0., 0. >>> data[1:-1,1], data[1:-1,-1] = 1., 1. >>> data[1,1:-1], data[-2,1:-1] = 1., 1. >>> data[2:-2,2], data[2:-2,-2] = 2., 2. >>> data[2,2:-2], data[-3,2:-2] = 2., 2. >>> data[3,3:-2] = 3. >>> data = np.roll(data, 4, 1)
Wir müssen das Interpolationsobjekt einrichten. Hier müssen wir auch die Koordinaten der zu verwendenden Knoten angeben.
>>> lats, lons = np.meshgrid(theta, phi) >>> knotst, knotsp = theta.copy(), phi.copy() >>> knotst[0] += .0001 >>> knotst[-1] -= .0001 >>> knotsp[0] += .0001 >>> knotsp[-1] -= .0001 >>> lut = LSQSphereBivariateSpline(lats.ravel(), lons.ravel(), ... data.T.ravel(), knotst, knotsp)
Als erster Test sehen wir, was der Algorithmus zurückgibt, wenn er auf die Eingabekoordinaten angewendet wird
>>> data_orig = lut(theta, phi)
Schließlich interpolieren wir die Daten auf ein feineres Gitter
>>> fine_lats = np.linspace(0., np.pi, 70) >>> fine_lons = np.linspace(0., 2*np.pi, 90) >>> data_lsq = lut(fine_lats, fine_lons)
>>> fig = plt.figure() >>> ax1 = fig.add_subplot(131) >>> ax1.imshow(data, interpolation='nearest') >>> ax2 = fig.add_subplot(132) >>> ax2.imshow(data_orig, interpolation='nearest') >>> ax3 = fig.add_subplot(133) >>> ax3.imshow(data_lsq, interpolation='nearest') >>> plt.show()