私は2D平面にn点を持っています。私は、C++でそれぞれの2点間の距離を計算したいと思います。計画の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 –