请教最快速的数某空间内点个数的方法
N多点分布如下图所示,我想随意画出一个box(知道顶点坐标),采用什么算法可以快速得到box内的点的个数?用matlab如何编程处理最省时间?(采用循环,对每一个点用if判断坐标,当然是可以实现,不过感觉比较累)欢迎兄弟们出谋划策。:)
[ 本帖最后由 心灯 于 2007-11-1 19:43 编辑 ] 是针对图还是针对画图所用到的点位数据?
回复 #2 spano 的帖子
不明白。 图中的一个圈圈代表一个点。我想得到随意画出的一个box中圈圈的个数,呵呵。 原帖由 心灯 于 2007-11-1 19:45 发表 http://www.chinavib.com/forum/images/common/back.gif不明白。 图中的一个圈圈代表一个点。我想得到随意画出的一个box中圈圈的个数,呵呵。
help inpolygon 原帖由 eight 于 2007-11-1 19:59 发表 http://chinavib.com/forum/images/common/back.gif
help inpolygon
谢谢,这个不错,呵呵,就用这个命令了。另外刚才我自己写了一个,还是利用循环的,两个的实现都贴上来吧。
%%
close all;
points=round(rands(50,2)*100);
figure(1);plot(points(:,1),points(:,2),'o');
minpoint=points(5,:); xmin=minpoint(1);ymin=minpoint(2);
maxpoint=points(10,:);xmax=maxpoint(1);ymax=maxpoint(2);
figure(1);hold on;plot(xmin,ymin,'r*');
figure(1);hold on;plot(xmax,ymax,'r*');
figure(1);hold on;plot(,);
figure(1);hold on;plot(,);
figure(1);hold on;plot(,);
figure(1);hold on;plot(,);
interpointsnum=0;
for ii=1:size(points,1);
xtemp = points(ii,1); ytemp=points(ii,2);
if (xtemp-xmin)*(xtemp-xmax)<=0
if (ytemp-ymin)*(ytemp-ymax)<=0
interpointsnum = interpointsnum+1;
end
end
end
x=points(:,1);y=points(:,2);
xv=;yv=;
in = inpolygon(points(:,1),points(:,2),xv,yv);
plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'bo')
insize=length(in)
interpointsnum
页:
[1]