Як інтерполювати багатоточкові дані до клітинних центрів неструктурованої сітки?


11

У мене є безліч багатоточкових польових даних, кожен набір даних точок відноситься до однієї комірки неструктурованої сітки. Мета - інтерполяція даних у центр клітин, безпосередньо чи опосередковано, найбільш точним способом.

Якщо я використовую зворотну зважену інтерполяцію, у випадку, коли відстань між джерелом та ціллю (центром комірки) дуже мала, я можу в кінцевому підсумку бути винятком з плаваючою точкою.

Для цього виду інтерполяції на структурованій сітці використовується об'ємно зважена інтерполяція. Це не перекладається безпосередньо на довільну клітинку сітки довільної форми.

Введення толерантності до інтерполяції IDW для обходу SIGFPE має сенс лише у тому випадку, якщо я не запроваджую жодних тестів, які могли б зробити інтерполяцію неефективною. Чи додавання достатньо невеликого до знаменника для кожної ваги можливий варіант із інтерполяцією IDW? Які методи інтерполяції, придатні для цієї проблеми, ви знаєте?δ

Додаткова інформація:

Для інтерполяції від сітки до точок я використовую інтерполяцію на основі барцицентричних координат . Кожна багатогранна клітина сітки розкладається на тетраедри. Поле, орієнтоване на клітинку, інтерполюється в точки комірки за допомогою інтерполяції IDW . Для кожної точки ведеться пошук тетраедра, в якому він лежить, а значення інтерполяються за допомогою барицентричної інтерполяції .

Для інтерполяції від точок до сітки це неможливо. Значення по центру комірки невідомі. Там немає ніякого способу , щоб зібрати чотиригранну композицію , яка буде забезпечувати дотримання , де W Р С є вага пов'язаний з точкою P і клітина центрального C . Це випливає з того, що конфігурація точки є довільною. Отже, я зараз використовую для цього IDW, переконуючись, що я не отримую вилучення з плаваючою комою. Чи є якісніші методи інтерполяції для цієї проблеми?pWPC=1WPC


Чи можете ви бути трохи більш конкретними щодо функції зважування, яку ви використовуєте? Існує декілька підходів інтерполяції, які використовують функції поліноміального зважування, які не мають особливості в кінцевих точках.
Педро

1
Якщо функція інтерполяції є гладкою, чи думали ви використовувати функції радіальної основи для глобальної інтерполяції з сітки? Ви можете побудувати швидкий прототип за допомогою python та scipy, дивіться тут: docs.scipy.org/doc/scipy/reference/generated/…
fcruz

Бібліотека, в якій я працюю, насправді підтримує RBF (і компактну, і глобальну підтримку), але у мене з цим дуже мало досвіду. Дякую за пораду .. :)
tmaric

1
Якщо ви все-таки спробуєте бібліотеку SciPy RBF, будьте в курсі цієї видатної помилки
n00b

Чи є у вас значення градієнта залежної змінної у вершинах комірок?
Джоннтра Вольта

Відповіді:


7

Посилання на різноманітні програмні пакети для інтерполяції розсіяних даних розміщені на моїй веб-сторінці http://www.mat.univie.ac.at/~neum/stat.html#fit

Книга
Дж. Ф. Фасшауера, Методи наближення Мешфрі за допомогою MATLAB, World Scienti fi c 2007.
дає комплексний стан техніки (станом на 2006 рік).

Ще кілька останніх робіт про інтерполяцію розсіяних даних:
http://www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/ Box-сплайни / box-splines.pdf

Який метод використовувати багато в чому залежить від використання отриманого інтерполянта. Методи кригінгу засновані на стохастичній моделі, отже, добре, якщо дані, які слід інтерполювати, дещо галасливі. Функції радіальної основи слід віддати перевагу, якщо (реалізується стабільно) та бажано отримати візуально приємний результат (інтерполяція з низькою кривизною).


Професоре Ноймайє, з методів, які Ви зібрали у посиланнях на Вашому веб-сайті та у Вашій відповіді, чи є якісь конкретні рекомендації щодо заявки, описаної у запитанні?
Джефф Оксберрі

Я здогадуюсь, що я маю щось робити ... як завжди, кількість речей, які потребують навчання, зростає з часом, а кількість речей, які мені вдається навчитися, лінійно зростає. :) Дякую. Я буду використовувати інтерполяцію IDW для початкової реалізації та читати про розсіяну інтерполяцію даних (RBF, здається, є модним вибором). :)
tmaric

1
@GeoffOxberry: я збирав посилання з часом, не спробувавши пакунки. Тому я не можу рекомендувати конкретний. Але я додав коментар до якісних рекомендацій.
Арнольд Ноймаєр

3

Нижче я наведу приклад того, як я інтерполюю з однієї сукупності точок в іншу на сітці з кінцевим обсягом.

У мене розміщене розташування змінних - дані, які я зберігаю в пам'яті, представляють значення у клітинках-центрах. Я зберігаю змінні поля та їх градієнти. Градієнти знаходять із оточуючих значень, що розв'язують задачу з найменшими квадратами (з QR за допомогою відображень Householder).

Ваша домовленість може відрізнятися, але принцип той же.

ϕf

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

nbrnbn,ff

Тоді я пишу

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

Отже, вам потрібен один набір значень поля та градієнтів у цих точках. Вам потрібно визначити, які навколишні точки сприятимуть вашій інтерпольованій точці, а також вектори відстані від цих точок до точки, до якої ми інтерполюємо.

Наприклад: Якщо ви зберігаєте дані, що представляють значення у вершинах комірок, ви використовуєте це рівняння для пошуку значень центру комірки тощо, все залежно від ситуації, у якій ви знаходитесь.

Таким чином, це засноване на серії Тейлора навколо точки. Можна також використовувати й другі похідні для отримання більш точного вираження.


ϕf1n

1
Я написав це у своєму коді на льоту. Тут лише передбачається, що дані змінюються лінійно в просторі, тому включаються лише перші похідні серії Тейлора. Припущень щодо сітки немає, вона працює для будь-якої сітки.
Johntra Volta

1
Однак ви можете додати ваги. Як у реконструкції градієнта з найменшим квадратом, де ми маємо як зважену, так і не зважену версію.
Джоннтра Вольта

1n

Ви можете зв’язатися зі мною електронною поштою (ви можете знайти її в моєму профілі користувача) для подальшого обговорення. Мені цікаво подивитися, як ви вирішите проблему.
Johntra Volta
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.