|
|
Abstand zwischen Koordinaten für Tabelle berechnen |
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.01.2013, 15:17
Titel: Abstand zwischen Koordinaten für Tabelle berechnen
|
 |
|
 |
|
Hallo,
ich habe eine Tabelle. Diese hat 8 Spalten, wobei nur Spalte 1,Spalte 2 Spalte 7 und Spalte 8 relevant für mich sind.
Spalte 1 besitzt x-Koordinaten
Spalte 2 besitzt y-Koordinaten
Spalte 7 Zeit
Spalte 8 Trajektoriennummer (1 beduetet dass diese Koordinaten alle zu Trajektorie 1 gehören, 2 zu trajektorie 2,usw.)
Zum Versuch: Es wurden Kolloide beobachtet, die sich bewegen. Alle 0,1 sekunden wurde ein Bild gemacht, anhand dessen die Koordinaten rausgelesen wurden.
Beispiel:
63.3729 345.5839 0 1
64.5893 347.9483 0.1 1
65.8284 349.8362 0.2 1
.
.
.
34.7473 347.4748 0 2
35.3823 348.4838 0.1 2
usw.
Insgesamt reicht die Trajektorienzahl bis 2000.
Ich soll nun anhand der Koordinaten und der Zeit die Geschwindigkeit für jedes 0.1sek Zeitfenster berechnen.
dazu müsste ich ja praktisch den Abstand zwischen x,y koordinaten zu den vorherigen x,y koordinaten berechnen( über Pythagoras) und dann diesen Abstand durch die verstrichene Zeit Teilen(also immer durch 0.1 sek)
wie kann ich das mit Matlab machen? Ich bin nicht wirklich eine Leuchte in Matlab. Bin froh dass ich Bilder öffnen kann.
Hab versucht irgendwie ne Schleife zu basteln, aber hab keine AHnung wie ich da ansetzen soll...
Vioele Grüße
Chris
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.01.2013, 23:02
Titel:
|
 |
Hallo,
erster Ansatz:
Grüße,
Harald
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 09:27
Titel:
|
 |
Das hab ich so auch schon versucht (Bzw. so in der Art;-)
Es taucht aber dann ein Fehler auf:
Error:The input charakter is not valid in MATLAB statements or expressions
die "hoch 2" ist dabei auch rot.
Ist mit dem "diff(x)"- code eigentlich gewährleistet dass er die 2.zahl von der ersten, die dritte von der zweiten und so weiter abzieht?
und wie krieg ich es hin dass er die Geschwindigkeiten von der ersten Trajektorie berechnet, dann ein Break macht und dann mit der 2.Trajektorie anfängt?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 10:47
Titel:
|
 |
Hallo,
Zitat: |
Error:The input charakter is not valid in MATLAB statements or expressions
die "hoch 2" ist dabei auch rot. |
Das Problem kann ich nicht nachvollziehen. Bitte den genauen verwendeten Code posten.
Zitat: |
Ist mit dem "diff(x)"- code eigentlich gewährleistet dass er die 2.zahl von der ersten, die dritte von der zweiten und so weiter abzieht? |
Genau umgekehrt. Da aber ohnehin quadriert wird, ist das egal.
Zitat: |
und wie krieg ich es hin dass er die Geschwindigkeiten von der ersten Trajektorie berechnet, dann ein Break macht und dann mit der 2.Trajektorie anfängt? |
Du kannst dir die verschiedenen Teile z.B. mit logischer Indizierung herausholen.
Grüße,
Harald
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 11:28
Titel:
|
 |
ich habe dein Code genau so übernommen wie er da steht. Da das nicht funktioniert hat, habe ich
genutzt. Kommt ja aufs gleiche raus.
das amcht er auch ganz schön (zumindest kann ich kein Fehler erkennen;-)
Wie läuft das mit der logischen Indizierung? Kann ich ihm sagen dass er die oben erwähnte Berechnung für alle machen soll die in der 8.Spalte eine 1 haben? und dann für alle, die in der 8.Spalte ne 2 haben? usw.?
Danke dir schonmal für deine Mühen!!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 11:43
Titel:
|
 |
Hallo,
wenn deine Daten in data liegen, dann z.B. so
Sollte die Laufzeit so zu lange sein, kann man auch überlegen, wie man das effizienter hinbekommt. Frage dazu: sind die Informationen für eine Trajektorie immer zusammenhängend, oder kann es sein, dass später nochmal weitere Informationen für eine Trajektorie kommen?
Grüße,
Harald
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 14:21
Titel:
|
 |
Die Informationen sind immer zusammenhängend. Das heisst dass erst alle x und y koordinaten für Trajektorie 1 aufgelistet sind, dann für trajektorie 2 usw.
Hab den Code von dir mal genutzt:
Meldung: Error using == Matrix dimensions must agree...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 17:01
Titel:
|
 |
Hallo,
Vermutliches Problem: der Vektor für die for-Schleife sollte ein Zeilenvektor sein:
Probiers mal bitte damit.
Grüße,
Harald
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 09:58
Titel:
|
 |
Kommt an die Stelle von "% Verarbeiten der I-ten Trajektorie" dann die zuvor genannte Formel
??
Oder wie muss ich das verstehen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 10:01
Titel:
|
 |
Hallo,
natürlich musst du aus dataSelect dann erst mal noch x und y herausholen, aber ansonsten: ja.
Grüße,
Harald
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 10:41
Titel:
|
 |
Ahh du sprichst in Rätseln:-)
Würde der Code so passen?
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 10:43
Titel:
|
 |
Hab das mal so gemacht und er spuckt nun seit ner halben Stunde Zahlen aus. X und y haben jeweils aber auch 475000 Werte.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 10:50
Titel:
|
 |
Hallo,
ich finde, es bringt wenig Lerneffekt, wenn ich alles mundgerecht liefere, man aber nicht versteht, was dabei passiert. Rätsel sind allerdings nicht beabsichtigt.
Zu deinem Code: du extrahierst X und Y, verwendest aber x und y. Das passt nicht zusammen. Zudem werden in der Schleife immer dieselben x und y verwendet, was auch nicht wirklich sinnvoll ist. Das wiederholte Ausspucken von Zahlen liegt an einem fehlenden Strichpunkt.
Ich dachte eher an sowas:
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 10:52
Titel:
|
 |
Hallo Loderunner,
Wenn Du die Zeilen mit einem Semikolon abschließt, werden nicht mehr sinnfrei und zeitraubend Zahlen ins Commandwindow geschrieben.
In Deinem Code wird "dataSelect" gar nicht benutzt und in jeder Iteration "v" überschrieben. Statt "diff(x)" zweimal auszurechnen, wäre dies doppelt so schnell:
Mit 10 zu multiplizieren ist übrigens billiger als durch 0.1 zu teilen.
Gruß, Jan
|
|
|
Loderunner |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2013, 11:30
Titel:
|
 |
|
 |
|
Erstmal vielen, vielen Dank. Is echt grandios was Matlab alles kann.
Wenn ich den Code richtig verstanden habe, habe ich jetzt für jede Trajektorie eine Anzahl an Geschwindigkeiten, die anhand der Koordinaten und der Zeit berechnet wurden.Richtig?
Und diese ganze Sache mit I wurde gemacht, damit er in der zusammenhängenden Tabelle nicht zwischendrin die Geschwindigkeit des Vektors von der letzten x,y-Koordinate von Trajektorie 1 und der ersten x,y-Koordinate von Trajektorie 2 berechnet? Richtig?
Wenn ich mir v ausspucken lasse, listet er mir dann für jede Trajektorie auf wieviel Geschwindigkeiten berechnet wurden (wenn da steht [116x1 double]=116 Geschwindigkeiten?)?? Sehe ich das auch richtig?
und mit v{1} kann ich auf die Geschwindigkeiten der ersten Trajektorie zugreifen!!(Das hab ich selbst rausgefunden:-D
Kann ich den höchsten Geschwindigkeits-Wert im kompletten Datensatz mit max (v{I}) rausfinden? Oder hab ich da wieder ein Denkfehler?
Genauso stellt sich für mich die Frage, wie ich ein Histogramm über alle Geschwindigkeiten im Modell plotten kann.
(bx wäre dann z.B.
und dann
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|