2010-08-31 5 views
4

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

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

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

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

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

+0

У вас есть обратные функции х и у [Х [а, Ь] = х, у [а, Ь] = у]? –

+0

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

ответ

2

Существует две общие категории решений, которые вы можете попробовать. Одним из них является точным аналитическим подходом: выяснить точную дробную область 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); вы обнаружите, где каждое из этих 16 местоположений упало на плоскости x,y и добавит это 1/16-е значение к каждому контейнеру.

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

+0

@JF - Алгоритм для какого типа? Аналитический метод, вероятно, свойственен вашей проблеме, поэтому вам, скорее всего, придется самому заниматься математикой. Решение сглаживания просто для всех (a, b) для (i = 1 к k, j = 1 к k): добавьте p (a, b)/k^2 к тому, что p (x, y), соответствующее (a + i/k-1/2k-1/2, b + j/k-1/2k-1/2). –

Смежные вопросы