表示声纳/雷达/回声位置的数据类型

时间:2013-07-04 15:15:19

标签: java c# c types

我只是对声纳设备有一个普遍的想法。声纳结果如何用datatype表示。

目前,我提出的解决方案是拥有一个360度的2D array,其中的值表示距离被击中的距离,最大范围意味着没有任何东西存在。这个问题是它使用3d声纳示例变得工作密集,并且对于2d也不太便宜。

注意:我希望datatype代表主动声纳。

1 个答案:

答案 0 :(得分:1)

以下是测距仪数据的几种表示。根据您正在进行的处理,其中一个可以帮助您降低处理成本。

极坐标,跳过缺失值

不是将缺失值设置为MAX_RANGE,而是仅存储极坐标中的命中。在C中,您将使用此结构的数组:

struct Hit {
  float angle;
  float range;
  float incline;  // If you need 3d coordinates.
}

此表示的好处是您不会花时间处理缺失的读数。缺点是极坐标很难直接使用,导致我......

笛卡尔坐标,跳过缺失值

笛卡尔坐标通常更容易处理。使用此结构的数组:

struct Point {
  float x;
  float y;
  float z;
}

kd-tree

kd-tree是一种数据结构,它以一种可以更快速地回答常见查询的方式对空间进行分区。像“距离(x,y,z)5米的点是什么”或“距离(x,y,z)的最近点是什么”的查询,使用kd树可以更快地回答,而不是通过遍历每个单独指出。

八叉树(或四叉树,2d)

八叉树非常类似于kd树,但选择了一种不同的分区空间方法(kd-tree通过确保将点划分为相等的组来划分空间,而八叉树通过取中点来划分空间) 。如果您经常添加和删除点,则使用八叉树会更容易。当你的分数分布非常不均匀时,八分球效果不佳 - 如果你在1公里的空间内工作,并且相距1 nm,那么八叉树的效率将低于kd树。

结论

这些是测距数据的主要表现形式。其中一个可能适用于您的情况,但您应该理解,任何这些表示都可能导致处理速度变慢。每种类型的处理可以具有最佳的不同表示。如果您的处理速度仍然太慢,您应该询问有关您正在进行的特定处理类型的问题。