考虑一个维度为 的矩阵Nx2,其中每一行包含统一 PDF 的下限和上限(即概率密度函数)。
我想计算重叠的数量,其中重叠定义为两个 PDF 重叠的情况,例如:
- PDF1:
[2,5] - PDF2:
[3,6] - 两个 PDF 在区间内重叠
[3,5]。
显然,如果三个 PDF和p1重叠,我计算三个重叠:vs. ,vs. ,vs. 。p2p3p1p2p1p3p2p3
我创建了以下计算重叠的 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,它仍在运行。
您能否提出一种降低所提出算法复杂性的方法,也许排除一些先验比较?
提前致谢。