2010-08-31 161 views
4

我有一個12乘50陣列,需要重新綁定。該陣列表示二元概率分佈,p(a,b),其中ab是非笛卡爾座標。但是,我想重新設定它,以便以笛卡爾座標p(x,y)分配。二維重組算法

ab是(輕度)非線性地(x,y)空間與xy,但是我做了簡化的假設(a,b)箱看起來像凸quadilaterals(歪盒子!)。我可以在所有bin角落查找與(a,b)(x,y)相關的表格。

任何人都知道一個算法,做這個重組,以幫助我重新發明輪子?

我特別尋找分析解決方案,但會尋求解決方案,將(a,b)箱分成多個小箱並根據其中心位置將這些箱分揀到合適的(x,y)箱中。

請注意,這是一個重組任務,不只是插值(這將是小菜一碟)。

+0

你有X和Y [X [A,B] = x的反函數, Y [A,b] = Y]? – 2010-08-31 13:41:36

+0

不,不幸的是,這些功能無法通過分析來表達。這就是我通過優化算法使(a,b)與(x,y)相關的查找表的原因。 – 2010-09-01 07:24:54

回答

2

有兩種常見的解決方案可以嘗試。一種是精確的分析方法:找出與重疊的bin (a,b)的準確分數區域f,然後針對該bin獲得所有重疊ab的總和f*p(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),...,每個點都包含(a,b) bin的值的1/16;你會發現16個位置中的每一個落在x,y平面上,並將該1/16值添加到每個箱。

(隨機解決方案也存在,但對於你的問題,他們將推出更大的錯誤,需要更長的時間來計算。)

+0

@JF - 哪種類型的算法?分析方法可能是你的問題特有的,所以你可能必須自己做數學。對於(i = 1到k,j = 1到k),反鋸齒解決方案只是全部(a,b):將p(a,b)/ k^2添加到對應的p(x,y)位置(a + i/k-1/2k-1/2,b + j/k-1/2k-1/2)。 – 2010-09-01 14:31:27