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

Walze rollt über Ebene

 

Atlan
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2019, 13:36     Titel: Walze rollt über Ebene
  Antworten mit Zitat      
Hallo zusammen,

ich bin ein richtiger Neuling was MatLab angeht und muss für eine Abschlussarbeit eine kleine Simulation programmieren. Nachdem ich mich durch ettliche Foren geklickt habe, stehe ich leider immernoch vor vielen Fragen Embarassed

Praktisch geht es um eine Walze, die über eine Ebene rollt. Ich muss dabei die Interaktion zwischen Walze und Ebene untersuchen.

Für mein theoretisches Modell habe ich folgendes vorgesehen:

Ich habe die Walze als Punktwolke gescattet, welche einen Zylinder darstellt. Dieser Zylinder befindet sich auf einer geplotteten Ebene.
Konkret sieht mein aktueller Code wie folgt aus:

Code:

%Ebene

a = -3:0.1:3;
b = a;
[ai, bi] = meshgrid(a,b);
ci=0*ones (length(ai), length(bi));
mesh(ai, bi, ci)

hold on

%Zylinder

for t = 0:pi/16:2*pi;
for y = 0:0.1:1;
r = 1;
x = r*cos(t);
z = r*sin(t)+1;

xlabel('x');
ylabel('y');
zlabel('z');
               
scatter3(x,y,z,'o','blue');

end
end
 


Um den Ablauf des Rollens des Zylinders auf der Ebene zu vereinfachen, möchte ich diese zylindrische Punktwolke entlang der z-Achse "hüpfen" lassen, um die zyklische Belastung darzustellen.
Dabei stoße ich jedoch an meine sehr überschaubaren Grenzen.

Mein bisheriger Ansatz sahen wie folgt aus:

Die Schwingung sollte einer Sinus-Funktion entsprechen, deswegen wollte ich den z-Wert mit einem entsprechendem Sinus-Wert ergänzen. Das ganze wollte ich dann in eine Schleife stecken, damit der Zylinder in gegebenem Zeit-/ und Schrittabstand für die jeweilige Höhe neu berechnet wird.

Nachdem ich mir bei diesem Versuch das Skript häufiger komplett zerschossen habe, wurden mir dann nur noch einzelne Punkte ausgegeben.

Ich hoffe ich konnte mein Problem verständlich darstellen, und noch mehr hoffe ich, dass vielleicht jemand einen Tipp oder Ansatz für das Problem hat.

Sollte dieses Problem behoben sein, freue ich mich jetzt schon darauf einen Weg zu finden, die Kontaktpunkte als Feder-/Dämpfer-System darzustellen Rolling Eyes

Ich bedanke mich schonmal im Voraus für mögliche Ideen Very Happy
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.433
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2019, 13:47     Titel:
  Antworten mit Zitat      
Hallo,

der gegebene Code wird deutlich effizienter, wenn du einen Scatter-Plot mit vielen Punkten statt viele Scatter-Plots mit je einem Punkt erzeugst.

Code:
t = 0:pi/16:2*pi;
y = 0:0.1:1;
[ti, yi] = meshgrid(t, y);
x = r*cos(ti);
z = r*sin(ti)+1;          
scatter3(x(:),yi(:),z(:),'o','blue');


Zitat:
möchte ich diese zylindrische Punktwolke entlang der z-Achse "hüpfen" lassen, um die zyklische Belastung darzustellen.

Also eine Animation für verschiedene t, oder was?

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
 
Atlan
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2019, 09:02     Titel:
  Antworten mit Zitat      
Danke schonmal für den Tipp.

Mit dem Hüpfen meine ich nicht verschiedene t-Werte, sondern z-Werte.
Ich habe z ja in dem Code mit +1 beaufschlagt, damit die Walze auf der Ebene steht. Meine Idee war es jetzt, den z-Wert mit variablen Werten zu belegen, dass die Walze ihre Position verändert.

Konkret war mein Gedanke, dass ich beispielsweise ein a-Wert mit

Code:

a = 0:pi/16:2*pi;
 


deklariere (genau wie der t-Wert), und diesen a-Wert dann in einer Sinusfunktion zu z addiere

Code:

z = r*sin(t)+1+sin(a);
 


Dann wollte ich die scatter3-Funktion in eine Art Endlosschleife schreiben, mit einer kleinen Pause.

Im Endeffekt soll beim Starten der Animation die Walze wie aktuell dargestellt werden, dann nach beispielsweise

pause(0.5)

soll die Walze um den Sinus von a in der vorgegebenen Schrittweite neu berechnet werden und dann ein Stück weiter oben sein, und dann die Bewegung immer weiter entlang der Sinusfunktion.

Wenn das so irgenwie möglich ist liegt mein Problem darin, wie ich das in eine Endlosschleife verpacke..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.433
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.06.2019, 09:55     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag dann:
Code:
r = 1;
a = -3:0.1:3;
b = a;
[ai, bi] = meshgrid(a,b);
ci=0*ones (length(ai), length(bi));
mesh(ai, bi, ci)
hold on
a = 0;
while 1 > 0
    t = 0:pi/16:2*pi;
    y = 0:0.1:1;
    [ti, yi] = meshgrid(t, y);
    x = r*cos(ti);
    z = r*sin(ti)+1+sin(a);
    if a == 0
        sc = scatter3(x(:),yi(:),z(:),'o','blue');
    else
        sc.ZData = z(:);
    end
   
    zlim([-2, 4])
    pause(0.1)
    a = a + pi/16;
end

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