声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1041|回复: 4

[编程技巧] 请教最快速的数某空间内点个数的方法

[复制链接]
发表于 2007-11-1 19:40 | 显示全部楼层 |阅读模式

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

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

x
N多点分布如下图所示,我想随意画出一个box(知道顶点坐标),采用什么算法可以快速得到box内的点的个数?用matlab如何编程处理最省时间?(采用循环,对每一个点用if判断坐标,当然是可以实现,不过感觉比较累)
欢迎兄弟们出谋划策。:)

[ 本帖最后由 心灯 于 2007-11-1 19:43 编辑 ]
getPointsNum.JPG
回复
分享到:

使用道具 举报

发表于 2007-11-1 19:43 | 显示全部楼层
是针对图还是针对画图所用到的点位数据?
 楼主| 发表于 2007-11-1 19:45 | 显示全部楼层

回复 #2 spano 的帖子

不明白。 图中的一个圈圈代表一个点。我想得到随意画出的一个box中圈圈的个数,呵呵。
发表于 2007-11-1 19:59 | 显示全部楼层
 楼主| 发表于 2007-11-1 20:27 | 显示全部楼层
原帖由 eight 于 2007-11-1 19:59 发表


help inpolygon

谢谢,这个不错,呵呵,就用这个命令了。另外刚才我自己写了一个,还是利用循环的,两个的实现都贴上来吧。



  1. %%
  2. close all;
  3. points=round(rands(50,2)*100);
  4. figure(1);plot(points(:,1),points(:,2),'o');
  5. minpoint=points(5,:); xmin=minpoint(1);ymin=minpoint(2);
  6. maxpoint=points(10,:);xmax=maxpoint(1);ymax=maxpoint(2);
  7. figure(1);hold on;plot(xmin,ymin,'r*');
  8. figure(1);hold on;plot(xmax,ymax,'r*');

  9. figure(1);hold on;plot([xmin xmax],[ymin ymin]);
  10. figure(1);hold on;plot([xmin xmax],[ymax ymax]);
  11. figure(1);hold on;plot([xmin xmin],[ymin ymax]);
  12. figure(1);hold on;plot([xmax xmax],[ymin ymax]);

  13. interpointsnum=0;
  14. for ii=1:size(points,1);
  15.     xtemp = points(ii,1); ytemp=points(ii,2);
  16.     if (xtemp-xmin)*(xtemp-xmax)<=0
  17.         if (ytemp-ymin)*(ytemp-ymax)<=0
  18.             interpointsnum = interpointsnum+1;
  19.         end
  20.     end
  21. end

  22. x=points(:,1);y=points(:,2);
  23. xv=[xmin xmin xmax xmax xmin];yv=[ymin ymax ymax ymin ymin];
  24. in = inpolygon(points(:,1),points(:,2),xv,yv);
  25. plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'bo')

  26. insize=length(in)
  27. interpointsnum
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 17:51 , Processed in 0.066037 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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