-3
我在2D平面中有n个点。我想计算C++中每两个点之间的距离。计划中第m个点的位置是(x(m),y(m))。这在经过时间点上发生了变化。时间步数等于10^5。 我写下面的代码,但因为n是一个很大的数字(5000),我想要找到点之间的距离10^5次,我正在寻找最优化的方式来做到这一点。有谁能告诉我什么是最不耗时的方法吗?在C++中计算数据之间距离的最优化方法
for(i=1;n;++)
for(j=1;n;++)
if (i>j)
r(i,j)= r(j,i);
else
r(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
end
end
end
我知道,在Matlab中,我可以通过使用bsxfun
函数找到这个函数。我还想知道哪一个可以更快地计算距离? Matlab还是C++?
即使你能避免'如果'复杂性仍然是'O(n²)'。 – Jarod42
你想计算所有可能的点对之间的距离。无论如何,它将是O(N^2)。您可以尝试将其并行化以加快速度。 – CaptainTrunky
是的,这不是一个好方法,我正在寻找最佳方法。请问你能帮帮我吗? @ Jarod42 –