Performance 在一大组矩形内高效计算和分配点(大集合)

Performance 在一大组矩形内高效计算和分配点(大集合),performance,matlab,geometry,Performance,Matlab,Geometry,我有一个大的MxN坐标数组,在一个结构矩形中有一组大的矩形。现在我正在计算每个矩形的密度,计算其中点的面积/数量。 在Matlab中,处理此问题的低效方法如下所示 for ii=1:size(Rect,1) ind = X>Rect(ii,1) & X<Rect(ii,3) & Y>Rect(ii,2) & Y<Rect(ii,4); Num_of_coord(ii) = sum(ind); end ii=1时的:

我有一个大的MxN坐标数组,在一个结构矩形中有一组大的矩形。现在我正在计算每个矩形的密度,计算其中点的面积/数量。 在Matlab中,处理此问题的低效方法如下所示

for ii=1:size(Rect,1)
        ind = X>Rect(ii,1) & X<Rect(ii,3) & Y>Rect(ii,2) & Y<Rect(ii,4);
        Num_of_coord(ii) = sum(ind);
end
ii=1时的
:大小(Rect,1)

ind=X>Rect(ii,1)&XRect(ii,2)&Y您可以使用以下方法移除循环:


函数句柄不是比循环慢吗?@Kamtal匿名句柄是,而不是像本例中的
@gt
这样的内置句柄。对于X和Rect的大列表,此方法不够快,而且bsxfun的内存分配也会遇到问题。@shakuni
bsxfun
内存不足,是的。至于“足够快”,那么,
bsxfun
通常相当快,但当然,您可以尝试其他方法,看看它们是否更快
ind = bsxfun(@gt, X(:), Rect(:,1).') & bsxfun(@lt, X(:), Rect(:,3).') & ...
      bsxfun(@gt, Y(:), Rect(:,2).') & bsxfun(@lt, Y(:), Rect(:,4).');
Num_of_coord = sum(ind, 1);