心灯 发表于 2007-11-1 19:40

请教最快速的数某空间内点个数的方法

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

[ 本帖最后由 心灯 于 2007-11-1 19:43 编辑 ]

spano 发表于 2007-11-1 19:43

是针对图还是针对画图所用到的点位数据?

心灯 发表于 2007-11-1 19:45

回复 #2 spano 的帖子

不明白。 图中的一个圈圈代表一个点。我想得到随意画出的一个box中圈圈的个数,呵呵。

eight 发表于 2007-11-1 19:59

原帖由 心灯 于 2007-11-1 19:45 发表 http://www.chinavib.com/forum/images/common/back.gif
不明白。 图中的一个圈圈代表一个点。我想得到随意画出的一个box中圈圈的个数,呵呵。

help inpolygon

心灯 发表于 2007-11-1 20:27

原帖由 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]
查看完整版本: 请教最快速的数某空间内点个数的方法