2010-08-31 67 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