isterminal = 1; %1 weil die Integration bei erreichtem Wert gestoppt werden soll
direction = 1; % weil es bei der Steigung sein soll if y(:,1) > 1.5*10^6 %Zielwert
value=0; %stoppen
else
value=1; %nicht stoppen
end
der Wert y(:,1) steigt im laufe der For-Schleife über den Zielwert, allerdings stoppt die Integration nicht. Eine Fehlermeldung wird nicht angezeigt.
Ziel ist es, bei Erreichen des Zielwerts in eine neue Iteration zu springen.
mit dem Debugger solltest du dem selbst auf den Grund gehen können.
Du hast ja einen Vektor. Soll gestoppt werden, wenn:
a. eine bestimmte Komponente den Schwellwert überschreitet?
b. irgendeine Komponente den Schwellwert überschreitet?
c. alle Komponenten den Schwellwert überschreiten?
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 ;)
eine bestimmte Komponente den Schwellwert überschreitet?
ein.
Wird das für Matlab aus dieser Zeile
if y(:,1) > 1.5*10^6 %Zielwert
value=0; %stoppen
else
value=1; %nicht stoppen
end
nicht ersichtlich? Der Debugger bestätigt mir die Übersteigung des Zielwerts. Allerdings wird mir kein Wert für "Value" angezeigt, könnte das ein Grund sein?
y ist vermutlich ein Spaltenvektor. Versuch also mal y(1,:) oder einfach y(1).
Zitat:
Allerdings wird mir kein Wert für "Value" angezeigt, könnte das ein Grund sein?
Wenn du schrittweise bis zur letzten Zeile der Funktion gehst, sollte ein Value angezeigt werden.
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 ;)
Eine weitere Frage: Value springt nun, bei erreichen des Zielwerts, auf 0, wie es soll. Allerdings stoppt die Integration nicht, da die Zeit des Integrators nicht erreicht ist.
Ein kleines Beispiel:
Die Zeit habe ich wie folgt festgelegt:
Wird nun der Zielwerkt bei 480 Stunden erreicht (ist dann in p{7}), erfolgt eine Integration bis zu letzten Wert der Zeile p{7} (trotz Value =0). Kann ich das verhindern?
wenn ich das richtig sehe, hast du die Bedeutung von value falsch interpretiert. Es wird nach einer Nullstelle von value gesucht. Ich würde
value = y(1,:) - 1.5*10^6
wählen.
Falls y(1,:) < 1.5*10^6 ist value < 0. Wenn y(1,:) > 1.5*10^6 wird, wird value > 0.
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 ;)
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.