Verfasst am: 09.08.2013, 14:49
Titel: if-Bedingung funktioniert nicht richtig
Hallo zusammen, ich habe ein kleines Programm geschrieben, das die Fahrt eines Slingshot/Reverse Bungee Fahrgeschäftes darstellen soll. Zunächst einmal bin ich zur Vereinfach davon ausgegangen, dass ich nur ein Seil habe und es nur eine Auslenkung in Y-Richtung gibt. Die Simulation dessen hat soweit wunderbar geklappt.
Code:
function slingshot1 % Aufruf des Hauptprogramms slingshot 1 clearall global m d c g; % globale Variablendeklaration
g=9.81; % Erdbeschleunigung in [m/s^2]
d=80; % Dämpfungskonstante in [N/m]
c=500; % Federkonstante in [N/m]
m=250; % Masse Passagiere + Kugel in [Kg]
x0=[-700]; % Startwerte: Z1=Ort Z2=Geschwindigkeit pause on % ermöglicht das pausieren
tspan = (0:0.1:20); % Zeitspanne und Schritte in Sekunden
plot(t,y(:,1)); % Werte auftragen (Es soll nur die Auslenkung über die Zeit geplottet werden) xlabel('Zeit [s]'); % Benennung x-Achse ylabel('Auslenkung [m]')% Benennung y-Achse title('Simulation eines Slingshots')% Überschrift hinzufügen
Nun möchte ich nach einbauen, dass die Kräfte des Seils nur nur wirken, wenn die Auslenkung größer ist als die Seillänge (30m angesetzt, aber noch variablen). Zu dem Zweck möchte ich vorgeben, das c und d gleich 0 sind, wenn die Auslenkung (y) >=20 oder <=-20 ist.
Ich habe versucht das ganze mit einer if-Bedingung zu lösen:
Code:
if y>=20
c=500;
d=80;
elseif y<=-20
c=500;
d=80;
else
c=0;
d=0;
end
Dabei scheinen c und d aber bei 0 zu bleiben, sodass die Kurve immer weiter fällt. Hat jemand eine Idee, wie ich das Problem beheben kann? Evtl. gibt es ja auch eine bessere Lösung hierfür als eine If Bedingung...
Verfasst am: 10.08.2013, 02:55
Titel: Re: if-Bedingung funktioniert nicht richtig
Hallo Refurbished,
Noch ein Kommentar: "clear all" löscht alle lokalen Variablen, aber am Anfang einer Funktion gibt es noch gar keine. Darüber hinaus werden alle Funktionen aus dem Speicher gelöscht und das erneute Einlesen von der Festplatte verschwendet viel Zeit. Und weiterhin werden alle Debugger-Breakpoints gelöscht. Und alles, was das Debuggen erschwert, ist ein Feind des Programmierers.
Gruß, Jan
PS. Ja, ich schreibe mal ein Tutorium, anstatt mich immer wieder zu wiederholen.
Verfasst am: 12.08.2013, 13:23
Titel: Re: if-Bedingung funktioniert nicht richtig
Hallo Jan,
vielen Dank für die Information! Ich habe es direkt mal bei meinem Programm rausgenommen. Finde es immer wieder gut etwas dazuzulernen!
Das mit den Tutorien wäre natürlich für Anfänger wie mich eine super Sache, vielen Dank an dieser Stelle für euer unglaubliches Engagement. Weiter so!
Grüße,
Refurbished
Jan S hat Folgendes geschrieben:
Hallo Refurbished,
Noch ein Kommentar: "clear all" löscht alle lokalen Variablen, aber am Anfang einer Funktion gibt es noch gar keine. Darüber hinaus werden alle Funktionen aus dem Speicher gelöscht und das erneute Einlesen von der Festplatte verschwendet viel Zeit. Und weiterhin werden alle Debugger-Breakpoints gelöscht. Und alles, was das Debuggen erschwert, ist ein Feind des Programmierers.
Gruß, Jan
PS. Ja, ich schreibe mal ein Tutorium, anstatt mich immer wieder zu wiederholen.
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
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.