|
|
Zeit für Weg mit veränderlicher Geschwindigkeit? |
|
RoyalFlush |
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 27.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2011, 11:16
Titel: Zeit für Weg mit veränderlicher Geschwindigkeit?
|
|
Hallo,
sorry für den etwas umständlichen Titel.
Ich habe folgendes Problem. Sagen wir ich habe eine Strecke AB. Ich fahre diese Strecke mit meinem Auto, aber mit einer nicht konstanten Geschwindigkeit. Die Funktion der Geschwindigkeit ist mir bekannt.
Wie kann ich berechnen wie lange ich für die Strecke mit der bekannten Funktion der Geschwindigkeit brauche?
Und wie kann ich das so schnell (effizient) wie möglich in Matlab berechnen?
Bitte um Eure Hilfe,
Danke sehr!
|
|
|
|
|
aj.geissler |
Forum-Guru
|
|
Beiträge: 251
|
|
|
|
Anmeldedatum: 26.11.07
|
|
|
|
Wohnort: Seeheim-Jugenheim
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2011, 11:29
Titel:
|
|
Hi,
für die zurückgelegte Strecke gilt:
s(t)= Integral (v(µ) dµ ) von µ=0 bis µ=t.
Für einen ganz einfachen Ansatz in Matlab könnte man folgendes machen:
Annahme: Die Geschwindigkeitswerte liegen in einem Vektor V vor. Jedes Vektorelement wurde nach einer definierten Zeitdifferenz erfasst (Bsp. Samplerate = 1 Hz, d.h. 1 Wert / Sekunde).
Die Integration kann durch eine einfache Kumulation aproximiert werden (z.B. mit Hilfe von cumsum).
S=cumsum(V) .*dt % dt ist hier in diesem Fall 1 Sekunde
Nun bestimmen wir den Index des Wegvektors S, der der gesuchten Wegstrecke AB (=: Sx) entspricht.
deltaS = abs ( S - Sx);
ki=find(deltaS == min(deltaS));
Die gesuchte Zeit tx berechnet sich dann zu:
tx=ki * dt %(dt ist hier wie gesagt 1 Sekunde)
Die numerische Integration kann anstelle von cumsum auch mit genaueren Berechnungsmethoden approximiert werden.
Das Prinzip sollte aber gleich bleiben.
Grüße
Andreas
|
|
|
RoyalFlush |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 27.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2011, 11:53
Titel:
|
|
Vielen Dank für Deine Antwort.
Leider ist mir das zu ungenau, ich würde die Zeit so genau wie möglich brauchen. Zumindest mal auf 2 oder 3 Nachkommastellen.
Ich habe mal eine Skizze angefügt wie mein Problem aussieht.
Danke!
Beschreibung: |
|
Download |
Dateiname: |
variableSpeed.png |
Dateigröße: |
91.83 KB |
Heruntergeladen: |
878 mal |
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2011, 15:30
Titel:
|
|
ich würde interpolieren statt nur den passenden Index raus zu suchen. Das dürfte noch ein klein wenig genauer sein (je nachdem wie die Diskretisierung ist)
viele Grüße
Thomas
|
|
|
aj.geissler |
Forum-Guru
|
|
Beiträge: 251
|
|
|
|
Anmeldedatum: 26.11.07
|
|
|
|
Wohnort: Seeheim-Jugenheim
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2011, 18:19
Titel:
|
|
Hi,
hinsichtlich Genauigkeit bieten sich viele weitere Lösungsmöglichkeiten.
So könnte man auch eine Simpson-Integration oder andere verwenden.
Aber ansonsten ist das Prinzip der rein numerischen Lösung perfekt verwirklicht.
Grüße
Andreas
Falls die Abtastzeitpunkte nicht äquidistant sind, muss man halt noch einen Vektor dt bilden und in die Berechnung einbeziehen.
|
|
|
RoyalFlush |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 27.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.03.2011, 01:50
Titel:
|
|
Hi!
Ich habe meine Problemstellung etwas falsch formuliert. Ich habe eine Strecke AB (z.B. 100m), fahre von A los und werde immer langsamer je naeher ich an B komme. Ich werde aber nicht konstant langsamer sondern nach einer bestimmten Funktion. Ich will wissen wann ich an einem gewissen Punkt vor dem Ziel ankomme (z.B. 30 m vor B).
Kann ich nicht auch eine Differentialgleichung aufstellen und die nach t loesen? Ich habe mal folgendes gemacht:
Die Funktion meiner Geschwindigkeit lautet:
v(x) = -K * x^2
wobei K eine Konstante ist.
Die Differentialgleichung lautet:
dx/dt = -K * x^2
nach Trennung der Variablen und Integration folgt:
-1/x = -K*t + c1
Zum Zeitpunkt t=0 ist x=L, daraus folgt c1 = -1/L.
Das ganze eingesetzt und dann nach t umgewandelt ergibt mir
t = (1/x - 1/L)/K
Kann ich das so machen? Fuer x wuerde ich die 30m einsetzen und fuer L die 100m.
Vielen Dank!
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.03.2011, 07:12
Titel:
|
|
Um zur Lösung zu kommen musst du auf jeden Fall
1. x(t) bestimmen
2. die Gleichung x(t') = x' lösen
beides kann man natürlich auch analytisch machen. Deine Lösung für diese spezielle Geschwindigkeitsfunktion ist ja auch richtig. Wenn du analytisch rechenen willst kannst du so vorgehen:
|
|
|
christian964 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 19.04.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2022, 07:17
Titel:
|
|
Hallo,
ich bin neu in dem Forum und noch nicht so ganz Sattelfest in MATLBA.
Ich habe ein ähnliches Problem wie RoyalFlush.
Ich habe aus einer Messung einen Vektor erhalten, welcher den zurückgelegten Weg eines Zylinders beinhaltet. Die Darstellung des Weges im Plot wird über den Datenpunkten angezeigt. Die Datenpunkte haben einen konstanten Abstand, ausgehend von der Abtastrate.
Ich möchte gerne den zurückgelegten Weg über der Zeit darstellen. Dafür habe ich auch schon die Geschwindigkeit ermittelt unter Zuhilfenahme der diff-Funktion.
Bei der Berechnung der Zeit läuft allerdings was schief.
Vielleicht hat einer einen Tip wie ich das korrekt hinkriege, so dass die Zeit bei 0 beginnt und dann eben in konstanten abständen zunimmt.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.04.2022, 11:13
Titel:
|
|
Hallo,
wenn s der zurückgelegte Weg ist und v die durchschnittliche Geschwindigkeit auf diesem Weg, dann müsste das passen.
Zitat: |
Die Datenpunkte haben einen konstanten Abstand, ausgehend von der Abtastrate.
|
Dann sollte sich der Zeitvektor doch direkt erstellen lassen?
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 ;)
|
|
|
christian964 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 19.04.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2022, 13:07
Titel:
|
|
Das Problem ist, dass ich die Abtastrate aktuell nicht weis. Das Elementweise dividieren liefert allerdings für mich nicht plausible Ergebnisse (sie Bild).
Fürs Grundverständnis, ich möchte gerne den zurückgelegten Weg über der Zeit plotten.
Beschreibung: |
|
Download |
Dateiname: |
untitled.jpg |
Dateigröße: |
21.26 KB |
Heruntergeladen: |
174 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.04.2022, 14:09
Titel:
|
|
Hallo,
wenn du die Abtastrate nicht kennst, wie hast du denn dann die Geschwindigkeit berechnet?
Ich weiß ja nicht, was du zu sehen erwartest. Inwiefern sind die Ergebnisse nicht plausibel?
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|