Wie interpoliere ich Mehrpunktdaten in die Zellzentren eines unstrukturierten Netzes?

11

Ich habe Sätze von Mehrpunktfelddaten, jeder Punktdatensatz bezieht sich auf eine einzelne Zelle eines unstrukturierten Netzes. Ziel ist es, die Daten direkt oder indirekt auf genaueste Weise direkt in das Zellzentrum zu interpolieren.

Wenn ich die inverse entfernungsgewichtete Interpolation verwende und der Abstand zwischen der Quelle und dem Ziel (Zellenmitte) sehr klein ist, kann es zu einer Gleitkomma-Ausnahme kommen.

Für diese Art der Interpolation auf einem strukturierten Netz wird eine volumengewichtete Interpolation verwendet. Dies führt nicht direkt zu einer beliebig geformten Netzzelle.

Die Einführung einer Toleranz für eine IDW-Interpolation zur Umgehung des SIGFPE ist nur dann sinnvoll, wenn ich keine Tests einführe, die die Interpolation ineffizient machen könnten. Ist das Hinzufügen eines ausreichend kleinen zum Nenner für jedes Gewicht eine mögliche Option bei der IDW-Interpolation? Welche für dieses Problem geeigneten Interpolationsmethoden kennen Sie?δ

Zusätzliche Information:

Für die Interpolation vom Netz zu den Punkten verwende ich eine Interpolation basierend auf den barzentrischen Koordinaten . Jede polyedrische Zelle des Netzes wird in Tetraeder zerlegt. Das zellzentrierte Feld wird unter Verwendung der IDW-Interpolation zu den Zellenpunkten interpoliert . Für jeden Punkt wird eine Suche durchgeführt, um das Tetraeder zu finden, in dem es liegt, und die Werte werden unter Verwendung der baryzentrischen Interpolation interpoliert .

Für die Interpolation von den Punkten zum Netz ist dies nicht möglich. Die zellzentrierten Werte sind unbekannt. Es gibt keine Möglichkeit, eine tetraedrische Zusammensetzung zusammenzusetzen, die erzwingen würde , wobei W P C das Gewicht ist, das sich auf einen Punkt P und ein Zellzentrum C bezieht . Dies liegt daran, dass die Punktkonfiguration beliebig ist. Daher verwende ich derzeit IDW, um sicherzustellen, dass ich keine Gleitkommaausnahme erhalte. Gibt es für dieses Problem besser geeignete Interpolationsmethoden?pWPC=1WPC

tmaric
quelle
Können Sie etwas genauer auf die von Ihnen verwendete Gewichtungsfunktion eingehen? Es gibt verschiedene Interpolationsansätze, die Polynomgewichtungsfunktionen verwenden, die an den Endpunkten keine Singularitäten aufweisen.
Pedro
1
Wenn die zu interpolierende Funktion glatt ist, haben Sie darüber nachgedacht, radiale Basisfunktionen zu verwenden, um global aus dem Netz zu interpolieren? Sie könnten einen schnellen Prototyp mit Python und Scipy erstellen, siehe hier: docs.scipy.org/doc/scipy/reference/generated/…
fcruz
Die Bibliothek, in der ich arbeite, unterstützt tatsächlich RBF (sowohl kompakte als auch globale Unterstützung), aber ich habe sehr wenig Erfahrung damit. Danke für den Tipp .. :)
Tmaric
1
Wenn Sie die SciPy RBF-Bibliothek ausprobieren, beachten Sie diesen herausragenden Fehler
n00b
Haben Sie Gradientenwerte der abhängigen Variablen an den Zellscheitelpunkten?
Johntra Volta

Antworten:

7

Links zu verschiedenen Softwarepaketen für die Interpolation gestreuter Daten finden Sie auf meiner Webseite http://www.mat.univie.ac.at/~neum/stat.html#fit

Das Buch
GE Fasshauer, Meshfree Approximation Methods using MATLAB, World Scienti fi c 2007.
bietet einen umfassenden Stand der Technik (Stand 2006).

Einige neuere Artikel zur Streudateninterpolation:
http://www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/ Box-Splines / Box-Splines.pdf

Welche Methode verwendet werden soll, hängt stark von der Verwendung des resultierenden Interpolanten ab. Kriging-Methoden basieren auf einem stochastischen Modell und sind daher gut, wenn die zu interpolierenden Daten etwas verrauscht sind. Radiale Basisfunktionen sind zu bevorzugen, wenn (stabil implementiert) und ein visuell ansprechendes Ergebnis gewünscht wird (Interpolation mit geringer Krümmung).

Arnold Neumaier
quelle
Herr Professor Neumaier, haben Sie von den Methoden, die Sie in den Links auf Ihrer Website und in Ihrer Antwort gesammelt haben, spezifische Empfehlungen für die in der Frage beschriebene Anwendung?
Geoff Oxberry
Ich denke, ich muss etwas lernen ... wie immer wächst die Menge der Dinge, die gelernt werden müssen, exponentiell mit der Zeit, und die Menge der Dinge, die ich lernen kann, wächst bestenfalls linear. :) Vielen Dank. Ich werde die IDW-Interpolation für die anfängliche Implementierung verwenden und über die Interpolation von Streudaten lesen (RBF scheint die trendige Wahl zu sein). :)
Tmaric
1
@GeoffOxberry: Ich habe die Links im Laufe der Zeit gesammelt, ohne die Pakete ausprobiert zu haben. Daher kann ich keinen bestimmten empfehlen. Aber ich habe einen Kommentar zu qualitativen Empfehlungen hinzugefügt.
Arnold Neumaier
3

Im Folgenden werde ich ein Beispiel geben, wie ich auf einem endlichen Volumennetz von einem Punktsatz zu einem anderen interpoliere.

Ich habe eine Anordnung von Variablen zusammengestellt - die Daten, die ich im Speicher speichere, repräsentieren Werte in Zellzentren. Ich speichere Feldvariablen und ihre Verläufe. Gradienten werden aus Umgebungswerten ermittelt, die ein Problem der kleinsten Quadrate lösen (mit QR über Reflexionen der Haushalte).

Ihre Anordnung kann abweichen, aber das Prinzip ist das gleiche.

ϕf

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

nbrnbn,ff

Dann schreibe ich

ϕf=1n(i=1nϕnbi+i=1n(ϕnbirnbi,f))

Sie benötigen also einen Satz von Feldwerten und Verläufen an diesen Punkten. Sie müssen entscheiden, welche umgebenden Punkte zu Ihrem interpolierten Punkt beitragen, sowie die Abstandsvektoren von diesen Punkten zu dem Punkt, zu dem wir interpolieren.

Beispiel: Wenn Daten, die für Werte repräsentativ sind, an Zellscheitelpunkten gespeichert werden, verwenden Sie diese Gleichung, um Werte für das Zellzentrum usw. zu ermitteln, je nachdem, in welcher Situation Sie sich befinden.

Das basiert also auf Taylor-Serien rund um den Punkt. Man kann auch zweite Ableitungen verwenden, um einen genaueren Ausdruck abzuleiten.

John Travolta
quelle
ϕf1n
1
Ich habe das spontan in meinen Code geschrieben. Hier wird nur angenommen, dass Daten im Raum linear variieren, weshalb nur erste Ableitungen von Taylor-Reihen enthalten sind. Es gibt keine Annahmen über das Netz, es funktioniert für jedes Netz.
Johntra Volta
1
Sie können jedoch Gewichte hinzufügen. Wie bei der kleinsten quadratischen Gradientenrekonstruktion, bei der wir sowohl eine gewichtete als auch eine ungewichtete Version haben.
Johntra Volta
1n
Sie können mich per E-Mail kontaktieren (Sie finden es in meinem Benutzerprofil), um weitere Informationen zu erhalten. Ich bin gespannt, wie Sie das Problem lösen können.
Johntra Volta