求助点云中找出距离最小10个点和点序列号
本帖最后由 huazi071783 于 2011-6-10 12:44 编辑一个坐标中有很多个随机点(xi,yi),这些点有序号标定i,我选定一个点(xn,yn),如何找出和选定的点的距离最小的10个点,并且要知道这10个点的序号i? sn=(xn-xi)^2+(yn-yi)^2
找出最小的10个sn不就得了 本帖最后由 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
这样算计算很慢
因为我要计算几十个这样的点云,就更慢了
有没有更简洁方法呢? 回复 3 # huazi071783 的帖子
help sort! 并看仔细些
= sort(A,...) 回复 4 # ChaChing 的帖子
明白,谢谢 回复 5 # huazi071783 的帖子
建议养成好习惯, 时常help下! 以免被习惯用法所圈住!
个人也是曾吃过此样的苦 老兄,我遇到的问题和你差不多哦,也是在点云中寻找和给定点距离最近的点,我用的笨办法,双循环加if ,速度慢的要死,请问有啥优化的方法么 回复 2 # tenglang 的帖子
我的问题是要在点云中找到离给出点距离最小的一个点,所以不能用4楼的方法,倒是你的这个思路启发了我,我把程序改为:
for k=1:128000
=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太大了吧? 回复 8 # viviani1 的帖子
Ref : 4F, http://forum.vibunion.com/thread-103567-1-1.html
页:
[1]