|
|
Wert von vorherigen Time Step nutzen |
|
Raketenmaid |
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2012, 10:22
Titel: Wert von vorherigen Time Step nutzen
|
|
|
|
|
Ich möchte ein paar numerische Unbestimmtheiten dadurch auffangen, dass ich in diesen Fällen auf Werte zurückgreife, die in dem Rechenschritt bestimmt wurden, bei dem zuletzt diese Unbestimmtheit nicht aufgetreten ist.
Konkret:
- Ich berechne die zwei Winkel eines Vektors im Bezug auf ein Koordinatensystem, welche den Vektor räumlich festlegen.
- Nun kann es passieren, dass der Vektor parallel zu einer der drei Koordinatenachsen wird oder in Extremfällen eine Länge von Null hat.
- In diesem Fall ist einer der beiden Winkel oder - im Extremfall - beide Winkel unbestimmt.
Nun möchte ich gerne, dass wenn einer der beiden Winkel (oder beide) unbestimmt werden, für diesen Rechenschritt mit dem alten Wert für den Winkel weitergerechnet wird.
Ich habe es mal mit dem Data Store Blöcken versucht, aber ich bekomme da nur wirre Warnhinweise und das Ding scheint sich im Kreise zu drehen (also die Simulation).
Nun ist es so, dass die betreffenden Winkel bestimmt werden und dahinter habe ich ein Data Store Write Block gesetzt und somit den Wert in den Data Store Block geschrieben.
Mit einem Data Store Read Block füttere ich den aufbewahrten Wert in die Funktion ein, die mir den Winkel bestimmt und mache eine if Abfrage. Diese soll bewirken, dass, falls der Sonderfall eintritt, mit dem Wert auf dem Data Store Block weiter gerechnet wird. Im Normalfall wird der Winkel wie gehabt berechnet.
Mache ich etwas falsch?
Gibt es einen geschickteren Weg, mein Ziel zu erreichen?
|
|
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2012, 11:22
Titel:
|
|
Spricht was gegen den Memory-Block?
Oder die Berechnung am besten gleich in einem Matlab Function-Block durchführen.
|
|
|
Raketenmaid |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2012, 12:29
Titel:
|
|
Ich weiß nicht, welchen Memory Block Du meinst.
Ich habe bislang den Data Store Memory Block in Verbindung mit dem Data Store Write and Data Store Read Blöcken benutzt.
Wie ginge das denn mit einer Matlab Funktion? Mit welchem Befehl kann ich den Wert aus dem vorherigen Simulationsschritt denn aufbewahren?
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2012, 12:38
Titel:
|
|
Also vom Prinzip her (Memory block) so wie im Bild (siehe Anhang).
In die Matlab-Function schreibst du:
jetzt kannst du am ende deine codes:
last_value = irgendein wert zu speichern;
schreiben und der der Wert ist im nächsten Schritt verfügbar.
Beschreibung: |
|
Download |
Dateiname: |
save_last_step.png |
Dateigröße: |
86.82 KB |
Heruntergeladen: |
761 mal |
|
|
|
Mmmartina |
Forum-Meister
|
|
Beiträge: 745
|
|
|
|
Anmeldedatum: 30.10.12
|
|
|
|
Wohnort: hier
|
|
|
|
Version: R2020a
|
|
|
|
|
|
Verfasst am: 19.12.2012, 13:21
Titel:
|
|
Ich würde es mit einem RS-FlipFlop + Switch und Delay versuchen.
Der/Die Eingangswinkel werden auf richtigkeit geprüft.
Wenn Richtig -> FF setzen
Wenn Falsch -> FF Rücksetzen
Das Flipflop fungiert als Schaltbedingung für den Switch.
Der Switch schiebt immer den Eingangswinkel direkt durch, gleichzeitig wird dieser dannach aber auch in ein Delay gepackt.
Wenn nun die Bedinung nicht ok ist, wird vom FF eine 0 kommen -> der Switch schaltet nicht mehr den aktuell anliegenden Winkel, sondern den von einem Schritt vorher durch.
Fertig.
Siehe bild als Skizze.
Beschreibung: |
|
Download |
Dateiname: |
test.PNG |
Dateigröße: |
19.12 KB |
Heruntergeladen: |
749 mal |
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
|
|
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 - 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.
|
|