scipy.interpolate.

SmoothSphereBivariateSpline#

class scipy.interpolate.SmoothSphereBivariateSpline(theta, phi, r, w=None, s=0.0, eps=1e-16)[Quelle]#

Geglättete bivariate Spline-Approximation in Kugelkoordinaten.

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.

warray_like, optional

Positive 1-D-Sequenz von Gewichten.

sfloat, optional

Positiver Glättungsfaktor, definiert für die Schätzbedingung: sum((w(i)*(r(i) - s(theta(i), phi(i))))**2, axis=0) <= s Standardmäßig s=len(w), was ein guter Wert sein sollte, wenn 1/w[i] eine Schätzung der Standardabweichung von r[i] ist.

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

get_coeffs()

Gib die Spline-Koeffizienten zurück.

get_knots()

Gibt ein Tupel (tx,ty) zurück, wobei tx,ty die Knotenpositionen des Splines bezüglich der x- und y-Variablen enthalten.

get_residual()

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

BivariateSpline

Eine Basisklasse für bivariate Splines.

UnivariateSpline

Ein geglätteter univariater Spline zur Anpassung an eine gegebene Menge von Datenpunkten.

SmoothBivariateSpline

Ein glättender bivariate Spline durch die gegebenen Punkte

LSQBivariateSpline

Ein bivariate Spline unter Verwendung von gewichteter Kleinster-Quadrate-Anpassung

RectSphereBivariateSpline

Ein bivariate Spline über ein rechteckiges Gitter auf einer Kugel

LSQSphereBivariateSpline

Ein bivariate Spline in Kugelkoordinaten unter Verwendung von gewichteter Kleinster-Quadrate-Anpassung

RectBivariateSpline

ein bivariate Spline über ein rechteckiges Gitter.

bisplrep

Eine Funktion zum Finden einer B-Spline-Darstellung einer Oberfläche im Bivariaten

bisplev

Eine Funktion zur Auswertung eines B-Splines im Bivariaten und seiner Ableitungen

Hinweise

Weitere Informationen finden Sie auf der FITPACK-Website zu dieser Funktion.

Beispiele

Angenommen, wir haben globale Daten auf einem groben Gitter (die Eingabedaten müssen nicht auf einem Gitter liegen)

>>> import numpy as np
>>> theta = np.linspace(0., np.pi, 7)
>>> phi = np.linspace(0., 2*np.pi, 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 Interpolatorobjekt einrichten

>>> lats, lons = np.meshgrid(theta, phi)
>>> from scipy.interpolate import SmoothSphereBivariateSpline
>>> lut = SmoothSphereBivariateSpline(lats.ravel(), lons.ravel(),
...                                   data.T.ravel(), s=3.5)

Als erster Test sehen wir uns an, 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_smth = lut(fine_lats, fine_lons)
>>> import matplotlib.pyplot as plt
>>> 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_smth, interpolation='nearest')
>>> plt.show()
../../_images/scipy-interpolate-SmoothSphereBivariateSpline-1.png