Bagaimana cara menginterpolasi data multi titik ke pusat sel mesh yang tidak terstruktur?

11

Saya memiliki set data bidang multipoint, setiap set data titik terkait dengan sel tunggal dari mesh yang tidak terstruktur. Tujuannya adalah untuk menginterpolasi data ke pusat sel, secara langsung atau tidak langsung, dengan cara yang paling akurat.

Jika saya menggunakan interpolasi Tertimbang Jarak Terbalik, dalam kasus ketika jarak antara sumber dan target (pusat sel) sangat kecil, saya mungkin berakhir dengan pengecualian titik mengambang.

Untuk interpolasi semacam ini pada mesh terstruktur, interpolasi volume tertimbang digunakan. Ini tidak menerjemahkan langsung ke sel mesh berbentuk sewenang-wenang.

Memperkenalkan toleransi untuk interpolasi IDW untuk menghindari SIGFPE masuk akal hanya jika saya tidak memperkenalkan tes apa pun yang dapat membuat interpolasi menjadi tidak efisien. Adalah menambahkan cukup kecil untuk penyebut untuk setiap berat pilihan yang mungkin dengan interpolasi IDW? Metode interpolasi apa yang cocok untuk masalah ini yang Anda ketahui?δ

Informasi tambahan:

Untuk interpolasi dari mesh ke titik, saya menggunakan interpolasi berdasarkan koordinat barcycentric . Setiap sel polyhedral dari mesh diuraikan menjadi tetrahedra. Bidang berpusat sel diinterpolasi ke titik sel menggunakan interpolasi IDW . Pencarian dilakukan untuk setiap titik untuk menemukan tetrahedron di mana ia berada, dan nilainya diinterpola menggunakan interpolasi barycentric .

Untuk interpolasi dari titik ke jala, ini tidak mungkin. Nilai-nilai yang berpusat sel tidak diketahui. Tidak ada cara untuk merakit sebuah komposisi tetrahedral yang akan menegakkan , di mana W P C adalah berat badan yang berhubungan dengan titik P dan pusat sel C . Ini berasal dari fakta bahwa konfigurasi titik arbitrer. Jadi, saya saat ini menggunakan IDW untuk ini, memastikan bahwa saya tidak mendapatkan pengecualian floating point. Apakah ada metode interpolasi yang lebih cocok untuk masalah ini?pWPC=1WPC

tmaric
sumber
Bisakah Anda sedikit lebih spesifik mengenai fungsi pembobotan yang Anda gunakan? Ada beberapa pendekatan interpolasi yang menggunakan fungsi pembobotan polinomial yang tidak memiliki singularitas di titik akhir.
Pedro
1
Jika fungsi interpolasi halus, pernahkah Anda berpikir untuk menggunakan fungsi basis radial untuk interpolasi global dari mesh? Anda dapat membuat prototipe cepat menggunakan python dan scipy, lihat di sini: docs.scipy.org/doc/scipy/reference/generated/…
fcruz
Perpustakaan tempat saya bekerja sebenarnya mendukung RBF (baik dukungan kompak maupun global), tetapi saya memiliki sedikit pengalaman dengan ini. Terima kasih atas tipnya .. :)
tmaric
1
Jika Anda mencoba pustaka SciPy RBF, waspadalah dengan bug yang
n00b
Apakah Anda memiliki nilai gradien variabel dependen pada simpul sel?
Johntra Volta

Jawaban:

7

Tautan ke beragam paket perangkat lunak untuk interpolasi data yang tersebar ada di halaman web saya http://www.mat.univie.ac.at/~neum/stat.html#fit

Buku
GE Fasshauer, Metode Pendekatan Meshfree menggunakan MATLAB, World Scientific 2007.
memberikan keadaan seni yang komprehensif (per 2006).

Beberapa makalah baru-baru ini tentang interpolasi data yang tersebar:
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

Metode mana yang digunakan sangat bergantung pada penggunaan interpolant yang dihasilkan. Metode Kriging didasarkan pada model stokastik, maka bagus jika data yang akan diinterpolasi agak berisik. Fungsi dasar radial lebih disukai jika (diterapkan secara stabil) dan hasil yang diinginkan secara visual diinginkan (interpolasi kelengkungan rendah).

Arnold Neumaier
sumber
Profesor Neumaier, tentang metode yang Anda kumpulkan dalam tautan di situs web Anda dan dalam jawaban Anda, apakah Anda memiliki rekomendasi spesifik untuk aplikasi yang dijelaskan dalam pertanyaan?
Geoff Oxberry
Saya kira saya harus belajar untuk melakukan ... seperti biasa, jumlah hal yang perlu dipelajari tumbuh secara eksponensial seiring waktu, dan jumlah hal yang saya pelajari, tumbuh secara linear paling baik. :) Terima kasih. Saya akan menggunakan interpolasi IDW untuk implementasi awal, dan membaca tentang interpolasi data yang tersebar (RBF tampaknya menjadi pilihan yang trendi). :)
tmaric
1
@ GeoffOxberry: Saya mengumpulkan tautan dari waktu ke waktu, tanpa mencoba paket. Jadi saya tidak bisa merekomendasikan yang khusus. Tetapi saya menambahkan komentar tentang rekomendasi kualitatif.
Arnold Neumaier
3

Di bawah ini saya akan memberikan contoh bagaimana cara interpolasi dari satu set poin ke yang lain, pada mesh volume terbatas.

Saya telah menyusun pengaturan variabel - data yang saya simpan di memori mewakili nilai di pusat sel. Saya menyimpan variabel bidang dan gradiennya. Gradien ditemukan dari nilai-nilai sekitar yang memecahkan masalah kuadrat-terkecil (dengan QR melalui refleksi Householder).

Pengaturan Anda mungkin berbeda tetapi prinsipnya sama.

ϕf

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

nbrnbn,ff

Lalu aku menulis

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

Jadi, Anda memerlukan satu set nilai bidang dan gradien pada titik-titik itu. Anda perlu memutuskan titik di sekeliling mana yang akan berkontribusi ke titik interpolasi Anda, serta vektor jarak dari titik-titik ini ke titik yang kami interpolasi.

Misalnya: Jika seseorang menyimpan data yang mewakili nilai pada simpul sel Anda menggunakan persamaan ini untuk menemukan nilai pusat sel, dll., Semua tergantung pada situasi apa yang Anda miliki.

Jadi ini didasarkan pada seri Taylor. Satu dapat juga menggunakan turunan kedua untuk mendapatkan ekspresi yang lebih akurat.

Johntra Volta
sumber
ϕf1n
1
Saya menulis ini dalam kode saya dengan cepat. Di sini hanya diasumsikan bahwa data bervariasi secara linear dalam ruang, itu sebabnya hanya turunan pertama dari seri Taylor yang disertakan. Tidak ada asumsi tentang mesh, ini bekerja untuk mesh apa pun.
Johntra Volta
1
Namun, Anda dapat menambahkan bobot. Seperti dalam rekonstruksi gradien kuadrat-terkecil, di mana kami memiliki versi berbobot dan tidak berbobot.
Johntra Volta
1n
Anda dapat menghubungi saya melalui email (Anda dapat menemukannya di profil pengguna saya) untuk diskusi lebih lanjut. Saya tertarik untuk melihat bagaimana Anda akan menyelesaikan masalah.
Johntra Volta