scipy.interpolate.

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*pi erfü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

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

SmoothSphereBivariateSpline

Ein glättender bivariate Spline in Kugelkoordinaten

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

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()
../../_images/scipy-interpolate-LSQSphereBivariateSpline-1.png