Ich habe n Punkte in einer 2D-Ebene. Ich möchte den Abstand zwischen zwei Punkten in C++ berechnen. Position des m-ten Punktes im Plan ist (x (m), y (m)). Dieser Punkt ändert sich im Laufe der Zeit. Die Anzahl der Zeitschritte ist gleich 10^5. Ich schrieb unter Code, aber als n ist eine große Zahl (5000) und ich möchte den Abstand zwischen den Punkten 10^5-mal finden, bin ich auf der Suche nach der optimierten Möglichkeit, das zu tun. Könnte mir jemand sagen, was der zeitaufwendigste Weg ist, das zu tun?Die am besten optimierte Methode zur Berechnung der Entfernung zwischen Daten in 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
Ich weiß, dass, in Matlab, ich dies durch die Verwendung bsxfun
Funktion finden. Ich möchte auch wissen, welche man Entfernungen schneller berechnen könnte? Matlab oder C++?
Auch wenn Sie das vermeiden können, 'wenn 'Komplexität wird immer noch 'O (n²)' sein. – Jarod42
Sie möchten Abstände zwischen allen möglichen Paaren von Punkten berechnen. Es wird sowieso O (N^2) sein. Sie können versuchen, es parallel zu machen, um Dinge schneller zu machen. – CaptainTrunky
Ja, es ist kein guter Weg und ich suche den besten Weg. Kannst du mir bitte helfen? @ Jarod42 –