MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   选择距另一点30m以内的矩阵中的所有点 (https://www.labfans.com/bbs/showthread.php?t=23416)

poster 2019-12-10 20:41

选择距另一点30m以内的矩阵中的所有点
 
因此,如果您查看我的其他帖子,那么我正在构建一个可以在森林中收集数据并将其粘贴在地图上的机器人就不足为奇了。我们拥有可以检测树中心和树干直径并将其粘贴在笛卡尔XY平面上的算法。

我们计划使用某些“关键”树作为用于对机器人进行定位的自然地标,使用三角测量和三边测量以及其他方法,但是仅使用Matlab进行编程并保持数据笔直和高效将变得越来越困难。

[B]是否有用于子集点数组或矩阵的技术?假设我在1km(1000m)的范围内存储了1000棵树,有没有办法说,只选择当前位置半径30m以内的点,然后仅与这些点一起使用?[/B]

我只会使用GIS,但是我正在Matlab中进行此操作,但我不知道任何适用于Matlab的GIS插件。

我忘了提,此代码正在联机,这意味着它正在自动执行实时操作的机器人上。我不知道随着地图长到几英里,使用不同的数据结构是否会有所帮助,或者不知道计算到随机点的每个距离是否是空间数据库将要执行的操作。

我正在考虑将树木阵列镜像成两个阵列,一个阵列按X排序,另一个按Y排序。然后按气泡排序确定其中的30m范围。我对X和Y这两个数组都做同样的事情,然后有了第三个交叉链接表,它将选择各个值。但是我不知道这叫什么,如何编程,我确定有人已经拥有了,所以我不想重新发明轮子。

[URL="http://en.wikipedia.org/wiki/Cartesian_coordinate_system"]笛卡尔平面[/URL]
[URL="http://en.wikipedia.org/wiki/Geographic_information_system"]地理信息系统[/URL]



[B]回答:[/B]

计算所有距离并扫描的简单解决方案似乎几乎在瞬间运行:

lim = 1; num_trees = 1000; trees = randn(num_trees,2); %# list of trees as Nx2 matrix cur = randn(1,2); %# current point as 1x2 vector dists = hypot(trees(:,1) - cur(1), trees(:,2) - cur(2)); %# distance from all trees to current point nearby = tree_ary((dists


所有时间均为北京时间。现在的时间是 01:06

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.