检查一个点是否在多维数据集内(使用matlab)

时间:2012-11-27 01:34:20

标签: algorithm matlab octave

让我用一个问题澄清我的问题:

假设我有一个大立方体= 100 * 100 * 100并且在大立方体内部有很少的立方体构造大立方体并且它们的尺寸= 10 * 10 * 10。 (我在大立方体内有1000个小立方体)现在,我需要检查,在哪个立方体中我的点(2,2,2)存在。答案肯定是这个问题的第一个立方体。然后在找到立方体后,我将保留每个立方体所包含的点数。

我的尝试:起初我想如果我将我的观点与8个角落进行比较就足够了。我虽然我的点的坐标必须大于立方体的4个角,然后小于立方体的剩余4个角,然后我将迭代地增加角点的坐标以检查其他立方体。但是,现在我发现我错了。

这个问题最适合的算法是什么?

此致 Amadeus的

注意:我正在使用MATLAB,因此如果有任何内置函数用于此目的,我也可以使用它们。

1 个答案:

答案 0 :(得分:0)

假设你有一个立方体N * N * N.然后创建尺寸为n * n * n的小立方体。 然后,所有立方体都可以由3D阵列表示,使得具有最接近原点(a * n,b * n,c * n)的边的立方体由该3d阵列中的索引(a,b,c)表示。 存储在该索引处的值是该多维数据集内的点数。 这是伪代码

//Pseudo code
int [N/n][N/n][N/n] arrayWithCountOfPointsInsideCubes;

void function countPointsForCubes(double point_x, point_y, point_z)
{ 
  arrayWithCountOfPointsInsideCubes[pint_x/n][point_y/n][point_z/n]++;
}