Алгоритм двумерного ребиннинга - PullRequest
4 голосов
/ 31 августа 2010

У меня есть массив размером 12 на 50, который нуждается в ребиннинге.Массив представляет собой двумерное распределение вероятностей, p(a,b), где a и b - не декартовы координаты.Однако я хочу перебросить его так, чтобы у меня было распределение в декартовых координатах p(x,y).

a и b (мягко) нелинейно связаны с x и y, однако я делаю упрощающее предположение, что (a,b) контейнеры выглядят как выпуклые четырехугольники (кривые коробки!) В (x,y) пробел.Я могу составить справочные таблицы, относящиеся от (a,b) к (x,y) во всех углах ящика.

Кто-нибудь знает алгоритм, который делает это ребининг, чтобы спасти меня от изобретения колеса?

Я особенно ищу аналитические решения, но остановлюсь на решениях, включающих нарезку (a,b) корзин на множество мини-корзин и сортировку их в подходящую (x,y) ячейку в соответствии с их центральным положением.

Обратите внимание, что это задание по перебазированию, , а не просто интерполяция (что было бы просто куском).

1 Ответ

2 голосов
/ 31 августа 2010

Есть две основные категории решений, которые вы можете попробовать. Одним из них является точный аналитический подход: вычислите точную дробную область f бина (a,b), которая перекрывает бин (x,y), затем просто суммируйте f*p(a,b) для всех перекрывающихся a и b для этого бина получить p(x,y). (Если ячейки a,b имеют разный размер, вместо этого вы должны найти фактическую площадь и разделить ее на площадь ячейки (x,y).) Если уравнения для границ корзин достаточно просты, это должно быть относительно простой, но немного утомительный.

Другая категория сглаживание , тот же метод, который используется в компьютерной графике. По сути, вы заменяете весь контейнер в (a,b) набором точек, расположенных на равном расстоянии друг от друга, и перетаскиваете эти точки в плоскость x,y и добавляете их в контейнер, содержащий это значение. Так, например, с сглаживанием 4 вы могли бы представить массив точек (a+3/8,b+3/8), (a+1/8,b+3/8), (a-1/8,b+3/8), ..., каждая из которых содержала 1/16 от значения (a,b) bin; Затем вы найдете, где каждое из этих 16 мест попадет на плоскость x,y, и добавите это 1/16-е значение к каждому бинку.

(Стохастические решения также существуют, но для вашей задачи они приведут к большим ошибкам и потребуют больше времени для вычислений.)

...