考虑一个维度为 的矩阵Nx2
,其中每一行包含统一 PDF 的下限和上限(即概率密度函数)。
我想计算重叠的数量,其中重叠定义为两个 PDF 重叠的情况,例如:
- PDF1:
[2,5]
- PDF2:
[3,6]
- 两个 PDF 在区间内重叠
[3,5]
。
显然,如果三个 PDF和p1
重叠,我计算三个重叠:vs. ,vs. ,vs. 。p2
p3
p1
p2
p1
p3
p2
p3
我创建了以下计算重叠的 MATLAB 代码:
for m = 1:N-1
for k = m+1:N
l1 = dataService.getObjectCoordinate(m,1);
l2 = dataService.getObjectCoordinate(k,1);
u1 = dataService.getObjectCoordinate(m,2);
u2 = dataService.getObjectCoordinate(k,2);
if (l1 <= l2 && l2 <= u1) || (l2 <= l1 && l1 <= u2)
numOverlaps = numOverlaps + 1;
end
end
end
但是,正如您可以想象的那样O(N^2)
,它是 ,当它很大时,它是非常糟糕N
的。我在三个小时前开始执行N=10000
,它仍在运行。
您能否提出一种降低所提出算法复杂性的方法,也许排除一些先验比较?
提前致谢。