|
|
Schleife unterbricht bei unrealistischem Wert - wie weiter? |
|
Quinn |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 08.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2014, 17:01
Titel: Schleife unterbricht bei unrealistischem Wert - wie weiter?
|
 |
|
 |
|
Hallo!
Ich habe eine while-Schleife geschrieben und diese läuft solange wie ich zu dem gewünschten Wert komme. Dabei wird der Endwert der letzten Schleife als Anfangswert der nächsten Schleife für eine bestimmte Variable gesetzt.
Jetzt passiert es allerdings, dass zwischendurch Werte berechnet werden, die außerhalb des "Bereichs" (Physiklische Gegebenheit) liegen und somit nicht weitergerechnet werden kann.
Ich weiß nicht wirklich wie ich das Problem lösen kann.
Ich dachte allerdings, dass ich die Durchläufe zählen könnte und dann wenn bei einem Durchlauf i ein "fehlerhafter" Wert auftaucht ich den Wert der Schleife i-1 nehmen könnte und leicht verändere, wie zB Wert_neu= Wert_i-1 +0.1.
Und das dann solange mache bis ich keine Fehlermeldung bei der nächsten Schleife bekomme.
Denkt ihr das klappt? Habt ihr eine bessere Idee? So ganz gefällt mir mein Ansatz nicht.
Wie kann ich Matlab denn sagen, dass der den Endwert der Schleife i nehmen soll, wenn der Wert der Schleife i+1 "falsch" ist?
Hoffe das war verständlich. Ich danke Euch!!
Quinn
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 08.01.2014, 23:20
Titel:
|
 |
den letzten wert merken und nicht überschreiben ^^
_________________
richtig Fragen
|
|
|
Quinn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 08.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2014, 23:29
Titel:
|
 |
Hallo, ja genau, das möchte ich machen.
Aber ich weiß nicht wie ich auf den gemerkten Wert zurückgreifen kann, wenn die Schleife abbricht.
if (wert <0)
"setze die Anfangsvariable auf den letzten Wert +0.1 und fange die while-Schleife von vorne an"
end
Beide Befehle machen mir Schwierigkeiten.
Ich kann einen Vektor erstellen mit den Endergebnissen, die für die nächste Schleifen als Anfangswert dienen: v=[wert(i=1),wert(i=2),...) Aber wie genau muss ich das schreiben?
Und mit welchem Befehl kann ich dann den letzten Wert aufrufen??
Und wie schaffe ich es, dass die while-schleife unterbrochen wird, aber dann trotzdem wieder anfängt???
DANKE!
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 09.01.2014, 00:39
Titel:
|
 |
am besten ist immer wenn du ein code beispiel postest. mit worten ist das immer schwer.
auf den letzen eintrag greift man mit v(end) zu zb
_________________
richtig Fragen
|
|
|
Quinn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 08.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.01.2014, 01:21
Titel:
|
 |
hallo, okay, es sind viele Funktionen und so, also habe ich es versucht einfach zu machen, hoffe verständlich?
VG
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 09.01.2014, 09:56
Titel:
|
 |
Ich würde, bevor der nächste Schleifendurchlauf gestartet wird, eine Überprüfung des berechneten Wertes vornehmen.
Ist diese Überprüfung korrekt, erst dann würde ich den alten Wert überschreiben.
Ergibt sich eine Wertebereichsverletzung, muss der Wert eben angepasst werden (alter Wert + 0,1 wie du sagtest) und dann erst der alte Wert überschrieben werden.
Bsp. ohne Sinn, nur fürs Verständnis:
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Quinn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 08.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.01.2014, 22:20
Titel:
|
 |
Danke für Eure Beiträge.
ich werde versuchen es so zu machen, Martina.
Ich habe eine Änderung vorgenommen (z_neu!), wie im Code vermerkt. Wie findet ihr den jetzigen Versuch?
Macht das Sinn? beim Verändern von z_alt muss ich ja sehen ob ich das vergrößere oder verkleinere ( z_alt = z_alt-/+0.1).
wenn die Schleife durchläuft und R<0, dann weiß ich, dass ich ein anderes z_neu benutzen muss. Allerdings wurden schon einige Funktionen mit dem "falschen" z durchgeführt.
Wie kann ich das also überschreiben, die Schleife abbrechen und alles von neuem mit dem neuen, veränderten Wert aus letztem Durchlauf berechnen?
"break" lässt die Schleife zwar abbrechen, aber lässt sie nicht automatisch von vorne durchführen. Oder muss ich alles dann noch einmal einfügen (den ganzen code wie oben) und durchführen lassen?
Vielen Dank!!
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|