WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Beliebige Punkte in der Ebene (2D) neu Ordnen

 

morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 26.05.2018, 14:50     Titel: Beliebige Punkte in der Ebene (2D) neu Ordnen
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor einer recht banalen Aufgabe deren Lösung ich mich jetzt viel zu aufwendig nähere.

Da ich sicher bin, dass man mit mehr Erfahrung und Wissen in Matlab das Ganze effizienter gestalten kann, möchte ich hier mal nachfragen ob evtl. Jemand eine Idee hat.

Folgendes möchte ich machen:

Ich habe eine Matrix mit beliebigen Zeilen und 2 Spalten, wobei Spalte 1 die x Koordinaten und Spalte 2 die y Koordinaten der in den Zeilen enthaltenen Punkte in der Ebene darstellen.

Nun sind die Punkte total chaotisch verteilt in der Matrix und was ich möchte ist die Matrix so neu ordnen, dass die Punkte nacheinander in aufsteigendem Abstand voneinander angeordnet sind.

Ein einfaches

Code:


funktioniert hier nicht weil die Punkte beliebig in der Ebene verteilt sind.

Was ich aktuell umsetze ist der Ansatz:

1. Nehme Punkt 1
2. Berechne Abstände von Punkt 1 zu allen anderen Punkten
3. finde Punkt mit geringstem Abstand
4. Schreibe Koordinaten von Punkt 1 in eine neue Matrix
5. Schreibe Koordinaten von Punkt aus (3) in die nächste Zeile der neuen Matrix
6. Lösche Punkt 1 aus Matrix
6... weiter mit Punkt 2

Ich suche mir also immer den Punkt mit dem geringsten Abstand.

Hat Jemand eine Idee wie das schlauer gemacht werden könnte?

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen


salerc
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 23.04.18
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 28.05.2018, 11:34     Titel:
  Antworten mit Zitat      
Hallo morisq,

was du versuchst, ist eine Art Briefträgerproblem zu lösen. Dazu gibt es Algorithmen, die aber, soweit ich weiß, nicht einfach so in Matlab implementiert sind. Ich denke daher, dass man mit Erfahrung in Matlab hier auch erstmal nicht weiter kommt. Deine Lösung ist zwar wahrscheinlich rechenintensiv, aber funktioniert.

Die Frage ist, warum du die Punkte in dieser Weise ordnen musst. Vielleicht würde es dir auch schon helfen, sie nach dem Abstand vom Ursprung zu ordnen? Dann könntest du eine neue Spalte (oder einen korrespondierenden Vektor) mit sqrt(x^2+y^2) erstellen und nach der Größe sortieren. Das wäre wahrscheinlich dann nicht so rechenintensiv, aber ich weiß nicht, ob es deinem Problem genügt.

Viele Grüße
salerc
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 23.06.2018, 09:30     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort!

Ich habe das jetzt ein wenig geändert.

Eine neue Sortierung ist nicht mehr notwendig, ich lasse die Punkte so wie sie sind.

Hintergrund:

Ich lese aus einem FEM Netz die Knoten und Elementkoordinaten ein.
Nun möchte ich die Netzmatrix nach speziellen Punkten durchsuchen und diejenigen Finden die sich auf bestimmten Linien im Raum befinden.

Lösung:

Ich speichere mir aus FEM nur die Knoten der Ziellinien ab...dann muss ich nix mehr neu strukturieren...

Vielleicht hilft das ja auch Jemand anderem.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.