Verfasst am: 25.11.2021, 19:51
Titel: Algorithmus finden für eine Kontur
Guten Tag,
Ich soll einen Algorithmus finden der die richtige Reihenfolge von Punkten ermittelt und diese dann verbindet. Die Aufgabe habe ich hier hochgeladen.
Leider stehe ich aufm Schlauch und weiß gar nicht wie ich das machen soll.
Vielleicht hat jemand ja eine Idee. Danke schon mal.
der erste Schritt dürfte der Algorithmus sein, der zweite die Implementierung.
Eine Möglichkeit für den Algorithmus, die ich sehe:
1. Startpunkt ist Liste mit allen Punkten
2. Eine zweite Liste mit einem beliebigen Punkt anfangen
3. solange die erste Liste mehr als einen Punkt enthält
a) den momentanen Punkt entfernen
b) den diesem Punkt am nächstgelegenen Punkt zum momentanen Punkt machen.
Vielleicht fällt dir auch was besseres ein.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Leider komm ich da nicht so richtig weiter mir fällt nicht ein wie ich diesen Algorithmus umsetze. Versuche das mit einer for schleife zu realisieren aber was richtiges zusammen bekomme ich da nicht.
Kann mir einer vielleicht dabei helfen ?
Mit besten Grüßen
_________________
Wenn man unsicher ist vergisst man zu wissen was mein weiß und weiß das was man denkt zu wissen.
Poste doch bitte, was du versucht hast. Stelle nach Möglichkeit einen Beispieldatensatz zur Verfügung und beschreibe bitte genau, was nicht so klappt wie es soll.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
das was ich vorhab ist es ja den einen Punkt xx(1) mit den anderen Punkten zu vergleichen um so zu gucken welcher dieser Punkte am nächsten zu meinen Vergleichs Punkt xx(1) liegt. Deswegen habe ich halt das hier gemacht m(k) = min(abs(xx(:,k+1) - liste)); der wert der am nächsten bei null liegt ist der der am nächsten an meinem xx(1) wert liegt. Aber wenn ich jetzt das Ergebnis bekommen und sehe ich sage mal der Punkt xx(5) am nächsten an meinem Punkt xx(1) liegt wie sage ich Matlab das er diesen Punkt nehmen und meinen Punkt xx(1) und die verbinden soll? Denn gut das klappt bei kleineren Datenmengen das ich ihn das manuell sage aber ich will das ja gerne in einer for-Schleife realisieren und Matlab soll das selbst immer wissen wie weitergeht. Denn ich den nächsten Punkt gefunden habe muss er ja wieder diesen mit den anderen vergleichen usw.
Und daran scheitert es grad ziemlich denn ich weiß nicht wie ich das anfangen soll. Ich hab halt nicht so ganz die Vorstellung wie ich Matlab diese sachen sagen kann.
bin jetzt etwas weiter gekommen habe das jetzt so gemacht und es funktioniert auch es kommt ein punkt raus der am nächsten an meinem startpunkt liegt. nun möchte ich aber direkt mit diesen punkten den vorgang wiederholen in der for schleife. aber ich kann sie nicht direkt in die for schleife einsetzen da sonst meine startpunkte zu früh überschritten werden. Hat jemand eine idee?
Um das herum würde ich nun eine for (oder besser while-) Schleife schreiben. Statt mit listex(1) und listey(1) zu arbeiten, würde ich mit einem currentX und currentY arbeiten, denen am Anfang listex(1) und listey(1) zugewiesen werden.
Es kann helfen, sich konsequent an den von mir vorgeschlagenen Ablauf zu halten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
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
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.