Wenn Sie nicht zufrieden mit dem, was von dsearchn vorgesehen ist, dann, wenn ich du wäre, würde ich eine von zwei folgenden Möglichkeiten:
- Finden nächsten Nachbarn auf den Eckpunkten (zum Beispiel, das Scheitel von Polygon A ist die NN eines gegebenen Eckpunkts von Polygon B).
- Wählen Sie einen zufälligen Punkt in Polygon A (Sie möchten vielleicht die konvexe Hülle von A berechnen, aber Sie können das überspringen und nur die Ecken berücksichtigen, die Sie bereits kennen). Dieser zufällige Punkt ist die Abfrage. Finden eine NN von diesem Punkt aus den Eckpunkten des Polygons B.
Möglicherweise möchten Sie in Software recommendation s um mehr bitten.
Edit:
Ein anderer Ansatz ist dies:
erstellen repräsentativen Datensatz von Polygon A. die Größe des Datensatzes Setzen Sie sich und füllen Sie es mit Proben von Punkten, die innerhalb des Polygons liegen. Wähle sie gleichmäßig innerhalb des Polygons.
Dann nehmen Sie einen Punkt von Polygon B (entweder eine Ecke oder einen beliebigen Punkt innerhalb Polygon B) und das ist die Abfrage Punkt, für die Sie Nearest Neighbor (n) innerhalb des repräsentativen Datensatz von Polygon A. suchen
Natürlich ist das nur eine Annäherung, aber mir fällt jetzt nichts ein.
Beachten Sie, dass Sie natürlich für Polygon B. das gleiche tun
Es gibt eine Funktion, dies zu dieser auf [File Exchange] (https://www.mathworks.com/matlabcentral/fileexchange/22444-minimum-distance-between-two-polygons), dass dies zu tun . Wie in den Kommentaren erwähnt, ist die Komplexität dieser Funktion 'O (mn)', während die minimale Komplexität 'O (logm + logn)' ist (siehe [Edelsbrunner] (https: //users.cs.duke. edel/~ edels/Papiere/1985-J-02-ComputingExtremeDistances.pdf)). – beaker
@baker ja, ich habe diese Funktion gefunden, bevor Sie sagen und mit ein wenig Code ändern, das gab meine Antwort. Vielen Dank für Ihre Zeit. –