Поставяне на повърхност към колекция от 3D точки от данни в java

Здравейте, имам облак от XYZ точки с данни. Искам да изчисля повърхност, която най-добре пасва на тези точки, така че по-късно да мога да въведа XY двойка и да върна стойността Z, където тази XY двойка лежи на повърхността.

Има ли съществуваща Java библиотека, която да оцени повърхност за мен?

Ако не, може ли някой да ми препоръча неща за четене, които ще опишат методите за изчисляване на това?

Ако е възможно, искам да мога да претегля точките (Някои точки са по-малко надеждни и следователно трябва да имат по-малък ефект върху завършената повърхност).


person ed Bevan    schedule 03.03.2013    source източник
comment
en.wikipedia.org/wiki/Regression_analysis   -  person Oliver Charlesworth    schedule 04.03.2013
comment
Освен ако не греша, това изглежда говори само за 2D регресия. Регресионните модели включват следните променливи: Неизвестните параметри, означени като β, които могат да представляват скалар или вектор. Независимите променливи, X. Зависимата променлива, Y.   -  person ed Bevan    schedule 04.03.2013
comment
Да, това е основният случай. След това се разширява до многовариантна регресия. Това обаче не е моята област, така че не мога да дам конкретни съвети! (Може обаче да намерите по-добра помощ на stats.stackexchange.com).   -  person Oliver Charlesworth    schedule 04.03.2013
comment
Ахаааа, бях отхвърлен от x независимите и y зависимите, мислейки, че те могат да се отнасят само до стойности x и y. Ако съм разбрал правилно, мисля, че мога да изхвърля Z стойностите в y зависимите и x независимите са поредица от {1, x, y, xy, xx, yy} за квадратично или {1, x, y , xx, yy, xy, xxx, yyy, xxy, yyx} за кубични и т.н.?   -  person ed Bevan    schedule 04.03.2013


Отговори (1)


Този вид проблем се решава най-добре с линейни най-малки квадрати. Въпреки това не бих се опитал да прочета статията в wikipedia, изглежда, че е написана за математици.

Идеята е проблемът да се промени в такъв за линейна оптимизация. Във вашия случай бих се опитал да напасна 2D полином. Това е уравнение във формата:

z(x, y) = A + Bx + Cy + Dx^2 + Exy + Ey^2 + Fx^3 + Gx^2y + Hxy^2 + Iy^3 + ...

Схванахте идеята. За даден набор от данни задачата се свежда до намиране на параметрите от A до I, които най-добре отговарят на точките от данни. Този вид проблем се решава лесно чрез линейни най-малки квадрати.

Разгледайте този код за напасване на елипси към 3D точки от данни. С известни усилия можете да адаптирате това, за да пасне на полиноми във формата, която описах по-горе.

Късмет!

person Hannesh    schedule 03.03.2013
comment
Наистина, статията в Wikipedia не е най-доброто въведение в темата. Но придобиването на някакъв основен опит в темата вероятно е препоръчително, преди просто да приложите произволни техники;) - person Oliver Charlesworth; 04.03.2013