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

Distanz zwischen Kurven

 

Foray_07
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 11:06     Titel:
  Antworten mit Zitat      
Hallo Funkyspike und Jan S,

ich habe mich nun auch entschlossen, mich hier anzumelden und auszutauschen, da ich momentan ein ähnliches Thema bearbeite und dabei auch über kleine Probleme stolpere...

Meine Aufgabe besteht darin, abgefahrene Formen auszuwerten, bisher nur 2-dimensional, aber es soll noch auf 3-dimensional erweitert werden. D.h. ich taste meine aktuellen Positionssoll- und -istwerte ab. Hierbei ist wichtig, dass die Istposition zur Sollposition voreilen, nacheilen oder zeitlich gleich sein kann. Ich kann somit nicht Istposition-Matrix mit x und y-Werten an Abtatstzeitpunkt/Index 1 mit Sollposition-Matrix mit Abtatstzeitpunkt/Index 1 nehmen, sondern muss dies zuerst prüfen.

Daher mein Ablauf wie folgt, habe auch einen Screenshot zum Ablauf angehängt:
1. Euklidischer Abstand von Soll- zu Istpunkten bestimmen. Damit zu jedem Sollpunkt einen Istpunkt, mit minimalem euklidischem Abstand gefunden.
2. Ich berechne meine Abweichung immer mit einer Normalen (Steigung m_Normale), die am betrachteten Sollpunkt ansetzt. Diese Normale bestimme ich aus der Steigung des vorangegangenen Sollpunktes und des betrachteten Sollpunktes (Steigung m). => m_Normale=-1/m
3. Ich bestimme mir den Vektor von betrachteten Sollpunkt zu vorangegangenen Sollpunkt (Vektor_Soll) und den Vektor von betrachteten Sollpunkt zu Istpunkt mit geringstem Euklidischen Abstand (Vektor_Min_Punkt). Daraus berechne ich mir den Schnittwinkel alpha über alpha = arccosinus((Vektor_Soll*Vektor_Min_Punkt)/(Betrag(Vektor_Soll)*Betrag(Vektor_Min_Punkt)))
4. Nun unterscheide ich, ober der Schnittwinkel alpha groesser, kleiner oder gleich 90 Grad ist. Ist er gleich 90 Grad, kann ich den Schnittpunkt mit dem Istverlauf berechnen. Ist er kleiner 90 Grad, muss ich den Index erhöhen und den nächsten Istpunkt der Matrix abfragen, Vektor_Min_Punkt zu diesem Punkt neu berechnen und den Schnittwinkel neu berechnen und Werte wieder aus, bis ich einen Istpunkt mit Schnittwinkel groessergleich 90 Grad gefunden habe Dann kann ich zu Geradenstück Istpunkt und vorigem Istpunkt einen Schnittpunkt mit der normalen berechnen. Ist der Schnittwinkel groesser muss ich den Index erniedrigen und Schnittwinkel berechnen, solang bis ich einen Winkel kleinergleich 90 Grad finde. Dann kann ich den Schnittpunkt aus Normalen und Istgeraden berechnen.
5. Über Vektormathematik berechne ich mir die Abweichung in der Position über betrachteten Sollpunkt zu Berechnetem Schnittpunkt auf der Istgeraden.

Das funktioniert soweit. Nur bin ich durch die Normale richtungsabhängig. Hättet ihr mir einen Tipp, wie ich diese Positionsabweichung noch berechnen könnte? Es ist auch so, dass z.B. Steigung der Sollpositionen 0 oder nicht definiert, ich mir keine Normale bilden kann und damit auch keine Positionsabweichung bekomme.

Auch hätte ich eine Frage, ob es möglich wäre , den oben genannten Algorithmus auf 3-dimensional zu erweitern? Oder habt ihr einen Vorschlag, wie die Positionsabweichung zu berechnen einfacher ginge, im 2-dimensionalen oder 3-dimensionalen?

Vielen Dank für Eure konstruktiven Beiträge auf meine Antwort und ich hoffe, die bisherigen Diskussionsteilnehmer können mit meinem Ablauf eventuell weiterkommen bzw. er ist für sie nützlich.

Viele Grüße!

Foray_07

Erklärung.png
 Beschreibung:

Download
 Dateiname:  Erklärung.png
 Dateigröße:  33.7 KB
 Heruntergeladen:  325 mal
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 24.06.2013, 13:14 Uhr von Jan S
Von Beitrag Abstand zwischen zwei Kurven berechnen aus dem Forum Programmierung


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.06.2013, 13:26     Titel:
  Antworten mit Zitat      
Hallo Foray_07,

Bitte poste eine neue Frage immer in einem neuen Thread. Danke!
Gruß, Jan
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 - 2025 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.