0

我只是对声纳设备进行了一般性的思考。声纳结果如何以datatype.

目前我想出的解决方案是拥有一个 360 2Darray值,其值表明到某物被击中时的距离,最大范围意味着什么都没有。这样做的问题是,使用 3d 声纳示例会变得工作密集,并且使用 2d 也不会太便宜。

注意:我想要一个datatype代表主动声纳。

4

1 回答 1

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树

kd-tree 是一种数据结构,它以一种便于更快地回答常见查询的方式对空间进行分区。像“什么点距离 (x,y,z) 5 米”或“什么是最接近 (x,y,z) 的点”这样的查询可以用 kd-tree 比遍历每个分别点。

八叉树(或四叉树,二维)

八叉树与 kd-tree 非常相似,但选择了不同的空间划分方法(kd-tree 通过确保将点分成相等的组来划分空间,而八叉树仅通过取中点来划分空间)。如果您经常添加和删除点,使用八叉树会容易得多。当您的点分布非常不均匀时,八叉树的工作效果较差——如果您使用 1 公里的空间,并且有两个相距 1 纳米的点,八叉树的效率将低于 kd 树。

结论

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

于 2013-07-08T08:44:24.343 回答