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

Integration von Beschleunigung

 

Mulitbodyman
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.21
Wohnort: München
Version: MATLAB R2020b
     Beitrag Verfasst am: 02.07.2021, 21:53     Titel: Integration von Beschleunigung
  Antworten mit Zitat      
Hallo Leute,

ich bin neu in diesem Forum, deswegen bitte ich um Entschuldigung, falls ich was falsch mache.

Und zwar stehe ich vor einem Problem, welches ich seit Tagen nicht lösen kann. Ich möchte eine Beschleunigung integrieren, sodass ich eine Geschwindigkeit erlange. Die Beschleunigung besteht aus einer Fallunterscheidung mit der Funktion piecewise. Bis zu dem Zeitpunkt tmid soll die Beschleunigung accJ1 positiv sein und ab dem Zeitpunkt tmid bis 2*tmid soll die Beschleunigung accJ1 negativ sein. Nach 2*tmid soll die Beschleunigung 0 sein. Der Plot der Beschleunigung ist richtig.
Nachdem ich die Beschleunigung integriere und die Geschwindigkeit erhalte, sehe ich im Plot, dass die Geschwindigkeit genau im Zeitpunkt tmid einen Sprung macht und negativ ist. Jedoch sollte die Geschwindigkeit weniger werden und gegen 0 gehen.
Wie in den Plots im Anhang zu sehen ist, steigt die Geschwindigkeit vom Negativen ins mehr Negative ab, was es nicht tun soll, sondern ab 4 runtergehen soll.

Ich hoffe ihr könnt mir bei diesem Problem weiterhelfen Smile

LG
Multibodyman
Code:

accJ1 = 1.5;

drive1Acc = piecewise(t <= tmid1, accJ1, tmid1 < t & t < 2*tmid1, -accJ1, 2*tmid1<= t, 0);


figure(3);
fplot(drive1Acc, [0 10]);
title( 'Drive Acceleration' )
grid
xlabel( ' t [s] ' ) ;
ylabel({ 'a [m/s^2]' }) ;

drive1Vel = int(drive1Acc,t);


figure(4);
fplot(drive1Vel,[0 10]);
title( 'Drive Velocities' )
grid
xlabel( ' t [s] ' ) ;
ylabel({ 'v [m/s]' }) ;
 


Acc_Vel.PNG
 Beschreibung:

Download
 Dateiname:  Acc_Vel.PNG
 Dateigröße:  35.88 KB
 Heruntergeladen:  260 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2021, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

du berechnest das unbestimmte Integral. Dieses ist nur bis auf eine Konstante eindeutig. Wenn du von 0 ab integrierst, passt es:
Code:
drive1Vel = int(drive1Acc,t, 0, t1);


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Mulitbodyman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.21
Wohnort: München
Version: MATLAB R2020b
     Beitrag Verfasst am: 03.07.2021, 04:17     Titel:
  Antworten mit Zitat      
Servus Harald,

erstmal danke ich dir sehr für die schnelle Antwort!

Jedoch kriege ich wenn ich
drive1Vel = int(drive1Acc,t, 0, 2*tmid1);
verwende kriege ich 0 für Anfang bis Ende raus. Dann habe ich die 0 weggelassen und
drive1Vel = int(drive1Acc,t, 2*tmid1);
probiert. Diesmal wird mir der richtige Verlauf der Geschwindigkeit geplottet, jedoch in negativer Richtung, also sozusagen gespiegelt an der x-Achse. Ich hab die Verläufe wieder in den Anhang gepackt. Wenn die Beschleunigung am Anfang positiv ist, dann sollte die Geschwindigkeit eigentlich auch positiv sein denke ich mir.

Ich hoffe du kannst mir weiterhelfen.

LG
Multibodyman

Nur_t1.PNG
 Beschreibung:

Download
 Dateiname:  Nur_t1.PNG
 Dateigröße:  63.64 KB
 Heruntergeladen:  283 mal
Mit_0_t1.PNG
 Beschreibung:

Download
 Dateiname:  Mit_0_t1.PNG
 Dateigröße:  66.38 KB
 Heruntergeladen:  267 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.07.2021, 07:25     Titel:
  Antworten mit Zitat      
Hallo,

wenn du 2*tmid1 als obere Grenze definierst, dann berechnest du das Integral über den ganzen Weg, was eine Zahl ist und keine Formel mehr. Das solltest du auch sehen, wenn du dir drive1Vel anzeigen lässt.
Du musst eine symbolische Variable als obere Grenze angeben. Was ich nicht geschrieben hatte ist, dass du sie auch als solche definieren musst
Code:


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Mulitbodyman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.21
Wohnort: München
Version: MATLAB R2020b
     Beitrag Verfasst am: 03.07.2021, 15:46     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank nochmal für die schnelle Antwort!

Jetzt funktioniert der code.

LG

Multibodyman
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 - 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.