Come interpolare i dati multipunto ai centri cellulari di una mesh non strutturata?


11

Ho set di dati di campo multipunto, ogni set di dati di punti si riferisce a una singola cella di una mesh non strutturata. L'obiettivo è interpolare i dati nel centro della cellula, direttamente o indirettamente, nel modo più accurato.

Se utilizzo l'interpolazione ponderata a distanza inversa, nel caso in cui la distanza tra la sorgente e l'obiettivo (centro della cella) sia molto piccola, potrei finire con un'eccezione in virgola mobile.

Per questo tipo di interpolazione su una mesh strutturata, viene utilizzata un'interpolazione ponderata per volume. Questo non si traduce direttamente in una cella mesh a forma arbitraria.

Introdurre una tolleranza per un'interpolazione IDW per aggirare SIGFPE ha senso solo se non introduco alcun test che potrebbe rendere inefficiente l'interpolazione. L'aggiunta di un sufficientemente piccolo al denominatore per ogni peso è una possibile opzione con l'interpolazione IDW? Quali metodi di interpolazione adatti a questo problema conosci?δ

Informazioni addizionali:

Per l'interpolazione dalla mesh ai punti, sto usando un'interpolazione basata sulle coordinate barcentriche . Ogni cellula poliedrica della maglia viene scomposta in tetraedri. Il campo centrato nella cella viene interpolato nei punti della cella usando l' interpolazione IDW . Viene effettuata una ricerca per ogni punto per trovare il tetraedro all'interno del quale si trova e i valori vengono interpolati usando l'interpolazione baricentrica .

Per l'interpolazione dai punti alla mesh, ciò non è possibile. I valori centrati sulla cella sono sconosciuti. Non v'è alcun modo per assemblare una composizione tetraedrica che rispettare , dove W P C è il peso relativo ad un punto P e un centro cellule C . Ciò deriva dal fatto che la configurazione del punto è arbitraria. Quindi, attualmente sto usando IDW per questo, assicurandomi di non avere un'eccezione in virgola mobile. Esistono metodi di interpolazione più adatti a questo problema?pWPC=1WPC


Puoi essere un po 'più specifico riguardo alla funzione di ponderazione che stai utilizzando? Esistono diversi approcci di interpolazione che utilizzano funzioni di ponderazione polinomiale che non hanno singolarità agli endpoint.
Pedro,

1
Se la funzione di interpolazione è fluida, hai mai pensato di utilizzare le funzioni di base radiale per interpolare globalmente dalla mesh? Potresti costruire un prototipo rapido usando Python e Scipy, vedi qui: docs.scipy.org/doc/scipy/reference/generated/…
fcruz,

La libreria in cui sto lavorando in realtà supporta RBF (supporto sia compatto che globale), ma ho poca esperienza con questo. Grazie per la punta .. :)
tmaric

1
Se provi la libreria SciPy RBF, fai attenzione a questo eccezionale bug
n00b

Hai valori di gradiente della variabile dipendente ai vertici delle celle?
Johntra Volta,

Risposte:


7

I collegamenti a diversi pacchetti software per l'interpolazione di dati sparsi sono disponibili sulla mia pagina web http://www.mat.univie.ac.at/~neum/stat.html#fit

Il libro
GE Fasshauer, Meshfree Approximation Methods utilizzando MATLAB, World Scienti fi c 2007.
fornisce uno stato dell'arte completo (dal 2006).

Alcuni articoli più recenti sull'interpolazione di dati sparsi:
http://www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/ box-spline / box-splines.pdf

Quale metodo usare dipende molto dall'uso fatto dell'interpolante risultante. I metodi di Kriging si basano su un modello stocastico, quindi sono buoni se i dati da interpolare sono piuttosto rumorosi. Le funzioni di base radiale devono essere preferite se (implementate stabilmente) e si desidera un risultato visivamente piacevole (bassa interpolazione di curvatura).


Professor Neumaier, dei metodi che hai raccolto nei link sul tuo sito web e nella tua risposta, hai qualche consiglio specifico per l'applicazione descritta nella domanda?
Geoff Oxberry,

Immagino di avere un po 'di apprendimento da fare ... come sempre, la quantità di cose che hanno bisogno di apprendimento cresce esponenzialmente con il tempo e la quantità di cose che riesco ad imparare, nel migliore dei casi cresce in modo lineare. :) Grazie. Userò l'interpolazione IDW per l'implementazione iniziale e leggerò l'interpolazione di dati sparsi (RBF sembra essere la scelta di tendenza). :)
tmaric,

1
@GeoffOxberry: ho raccolto i collegamenti nel tempo, senza aver provato i pacchetti. Quindi non posso raccomandarne uno in particolare. Ma ho aggiunto un commento su raccomandazioni qualitative.
Arnold Neumaier,

3

Di seguito fornirò un esempio su come interpolare da un set di punti a un altro, su mesh a volume finito.

Ho disposto la disposizione delle variabili: i dati che conservo in memoria rappresentano i valori nei centri cellulari. Conservo le variabili di campo e i loro gradienti. I gradienti si trovano in base ai valori circostanti che risolvono un problema dei minimi quadrati (con QR tramite riflessioni delle famiglie).

La disposizione potrebbe essere diversa ma il principio è lo stesso.

ϕf

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

nbrnbn,ff

Poi scrivo

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

Quindi hai bisogno di un set di valori di campo e gradienti in quei punti. Devi decidere quali punti circostanti contribuiranno al tuo punto interpolato, nonché i vettori di distanza da questi punti al punto in cui interpoliamo.

Ad esempio: se si memorizzano dati rappresentativi di valori ai vertici delle celle, utilizzare questa equazione per trovare valori del centro della cella, ecc., Tutto a seconda della situazione in cui ci si trova.

Quindi questo è basato sulla serie di Taylor sul punto. Si possono usare anche derivati ​​secondari per ottenere un'espressione più accurata.


ϕf1n

1
Ho scritto questo nel mio codice al volo. Qui si presume solo che i dati variano linearmente nello spazio, ecco perché sono inclusi solo i primi derivati ​​della serie Taylor. Non ci sono ipotesi sulla mesh, funziona per qualsiasi mesh.
Johntra Volta,

1
Tuttavia, è possibile aggiungere pesi. Come nella ricostruzione con gradiente almeno quadrato, dove abbiamo sia la versione ponderata che quella non ponderata.
Johntra Volta,

1n

Puoi contattarmi via e-mail (puoi trovarlo sul mio profilo utente) per ulteriori discussioni. Sono interessato a vedere come risolverai il problema.
Johntra Volta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.