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

Umrechnunng s-v-Verlauf in t-v-Verlauf

 

Papillon
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 08:47     Titel: Umrechnunng s-v-Verlauf in t-v-Verlauf
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem: Für einen gegebenen Weg-Geschwindigkeitsverlauf würde ich gerne den zugehörigen Zeit-Geschwindigkeitsverlauf bestimmen.

Weg und Geschwindigkeit sind folgendermaßen gegeben:

Code:

s = 0:0.1:50;
v = -0.048*s.^2+2.4*s;
 


Aus diesem Verlauf möchte ich den Zeit-Geschwindigkeitsverlauf bestimmen, d.h. ich benötige einen Vektor t passend zum Vektor v.

Meine bisherige Vorgehensweise ist folgendermaßen:
Code:

t = cumsum((s(2:end)-s2(1:end-1))./v(2:end));
t = t(1:end-1)
v = v(2:end-1)
 


Leider habe ich festgestellt, dass der resultierende Verlauf von der Schrittweite von s abhängt, d.h. wenn ich s in 1 schritten anstatt 0.1 Schritten generiere, sieht auch der t-v-verlauf anders aus, weil ein anderer Zeitvektor erstellt wurde.

Wer kann mir weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


razmatazz
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 18.08.11
Wohnort: Mönchengladbach
Version: R2010b
     Beitrag Verfasst am: 25.08.2011, 10:06     Titel:
  Antworten mit Zitat      
Hmmm, war in Kinematik mal ganz gut, aber obowhl es erst 2 Jahre zurückliegt, scheint da nicht viel von hängen geblieben zu sein.

Ich probiers mal:

Es ist die Zeit t als variable Größe gesucht, die entsprechende Gleichung kann lauten:
v(neu) = v(start) + a*(dt)² [mit a=Beschleunigung zum betrachteten Zeitschritt dt]

nach dt auflösen (nur den positiven Wert betrachten) und du hast den entsprechenden Zeitschritt, um von v(start) zu v(neu) erreichen.

Der Zusammenhang zwischen a,v,s ist:
v=sqrt(2*a*s)
aufgelöst:
a=v²/(2*s)
darin sind v und s aber als sich ändernde Größen zu betrachten:
a=( v(neu)²-v(start)² )/ ( 2* ( s(neu)-s(start) ) )
Schreibt man den Zähler mit der binomischen Formel anders, erhält man die Ableitung von v nach s, v':
a= v' * (v(start)+v(neu)) / 2

Dann müssen v' und die zustände des betrachteten Zeitschrittes eingesetzt werden, und man erhälst a.
Zurückeinsetzen ergibt dir den Zeitschritt dt.

Dann einen Vektor bilden:
tv=[ 0 v(0); 0+dt(1) v(1) ; dt(1)+dt(2) v(2) ; ...]

Ist eine numerische Lösung und daher nur angenähert. Mir fällt aber leider leider nicht ein, wie man es analytisch und auch programmtechnisch elegenater machen kann... ernüchternd...

Mit freundlichem Gruß,
Christoph
Private Nachricht senden Benutzer-Profile anzeigen
 
Papillon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 13:51     Titel:
  Antworten mit Zitat      
Hallo Christoph,

danke für deine Antwort!

Ich hab das ganze mal umgesetzt:

Code:

s = 0:1:50;
v = -0.048*s.^2 + 2.4*s;

t_vec = 0;
for ii=1:length(s)-1
   v_alt = v(ii);
   v_neu = v(ii+1);
   s_alt = s(ii);
   s_neu = s(ii);
   dt = sqrt(2*(s_neu-s_alt)/(v_neu+v_alt));
   t_vec = [t_vec t_vec(end)+dt];
 


Leider besteht im Ergebnis immer noch ein grober Unterschied, je nachdem wie man den s-Vektor aufbaut. Hast du eine Idee, wo der Fehler liegen könnte?

Grüße,
Papillon
Private Nachricht senden Benutzer-Profile anzeigen
 
razmatazz
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 18.08.11
Wohnort: Mönchengladbach
Version: R2010b
     Beitrag Verfasst am: 25.08.2011, 16:47     Titel:
  Antworten mit Zitat      
Zunächst mal habe ich im ersten Post einen Fehler:

v(neu) = v(start) + a*(dt)²
v(neu) = v(start) + a*dt } muss es heißen

Wenn du es mit meiner Lösung machen willst, die wie gesagt bestimmt nicht optimal ist, dann hast du falsch aufgelöst, bzw. ich kann es nicht nachvollziehen.
Alles eingesetzt ergibt:

dt= (v_neu - v_alt) / ((1,2 - 0,024*s_neu)*(v_neu + v_alt))

s_neu zum Schritt 0 = 0
v_neu zum Schritt 0 = v(0)
v_alt zum Schritt 0 = 0

s_neu zum Schritt 1 = 1
v_neu zum Schritt 1 = v(1)
v_alt zum Schritt 1 = v_neu zum Schritt 0 = 0

usw.

Dann die Ergebnisse (dt(Schritt) und v(Schritt)) für jeden Schritt in einen Vektor schreiben, und die jweiligen Koordinatenpaare auslesen und plotten.

Bei der Matlab Realisierung kann ich nicht kompetent behilflich sein, bin nur ein absoluter Anfänger. Und die kinemtatische Lösung ist wahrscheinlich auch nurn Gefrickel, weil sie konstante Beschleunigung im jeweiligen Schritt vorraussetzt.

Mit freundlichem Gruß,
Christoph
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.