声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1433|回复: 8

[编程技巧] 求助点云中找出距离最小10个点和点序列号

[复制链接]
发表于 2011-6-10 12:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 huazi071783 于 2011-6-10 12:44 编辑

一个坐标中有很多个随机点(xi,yi),这些点有序号标定i,我选定一个点(xn,yn),如何找出和选定的点的距离最小的10个点,并且要知道这10个点的序号i?
回复
分享到:

使用道具 举报

发表于 2011-6-10 13:59 | 显示全部楼层
sn=(xn-xi)^2+(yn-yi)^2
找出最小的10个sn不就得了
 楼主| 发表于 2011-6-10 15:23 | 显示全部楼层
本帖最后由 huazi071783 于 2011-6-10 15:27 编辑

回复 2 # tenglang 的帖子


是这样的,算出了距离后然后用sort就找到了最小的十个最小距离
但是点的数量繁多,上十万个,我的目的是要找到这些具体的点的 i 值
找出最小的距sn后,然后如果再从小到大用if语句找的话就有双重循环

snn=sort(sn);
for i=1:10
for j=1:N            %N为点数
if snn(i)==sn(j)
num(i)=j;
end
end
end
这样算计算很慢
因为我要计算几十个这样的点云,就更慢了
有没有更简洁方法呢?
发表于 2011-6-11 01:04 | 显示全部楼层
回复 3 # huazi071783 的帖子

help sort! 并看仔细些
[B,IX] = sort(A,...)

点评

赞成: 4.0
赞成: 4
  发表于 2011-6-12 08:23

评分

1

查看全部评分

 楼主| 发表于 2011-6-12 10:46 | 显示全部楼层
回复 4 # ChaChing 的帖子

明白,谢谢
发表于 2011-6-12 10:53 | 显示全部楼层
回复 5 # huazi071783 的帖子

建议养成好习惯, 时常help下! 以免被习惯用法所圈住!
个人也是曾吃过此样的苦
发表于 2011-6-14 09:57 | 显示全部楼层
老兄,我遇到的问题和你差不多哦,也是在点云中寻找和给定点距离最近的点,我用的笨办法,双循环加if ,速度慢的要死,请问有啥优化的方法么

点评

4 楼的chaching已经回答过你的问题了  发表于 2011-6-14 10:47
发表于 2011-6-14 20:19 | 显示全部楼层
回复 2 # tenglang 的帖子

我的问题是要在点云中找到离给出点距离最小的一个点,所以不能用4楼的方法,倒是你的这个思路启发了我,我把程序改为:
for k=1:128000
[C,I]=min((xii(k)-t.x).^2+(yii(k)-t.y).^2+(zii(k)-t.z).^2);
xii(k)=t(I).nx0;
yii(k)=t(I).ny0;
zii(k)=t(I).nz0;
end
其中t是结构体变量,但是运行结果出现错误,显示为??? Error using ==> minus
Too many input arguments.
t.x是1x189599的向量,不会是因为这个t.x太大了吧?
发表于 2011-6-14 23:54 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 10:15 , Processed in 0.126870 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表