|
|
Schleifenbedingung: zugewiesener Wert einer Variable ändert |
|
tnam |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 10.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.08.2020, 09:10
Titel: Schleifenbedingung: zugewiesener Wert einer Variable ändert
|
|
Hallo zusammen,
ich erhalte für die Variable "ID" verschiedene Identitätsnummern als Werte. Diese möchte ich zu Nutzen machen. Nämlich soll eine Schleife dann durchlaufen werden, wenn der zugewiesene Wert für ID sich ändert. Also für jede ID 1 mal die Schleife durchlaufen.
Wie kriegt man es hin, dass man den aktuellen Wert von "ID" mit dem vorherigem Wert - der ja nun quasi nicht mehr existiert, da er überschrieben wurde - vergleichen kann?
Danke für jede Antwort und Tricks & Tipps
LG
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 19.08.2020, 11:50
Titel: Re: Schleifenbedingung: zugewiesener Wert einer Variable än
|
|
Hallo tnam,
Zitat: |
Wie kriegt man es hin, dass man den aktuellen Wert von "ID" mit dem vorherigem Wert - der ja nun quasi nicht mehr existiert, da er überschrieben wurde - vergleichen kann? |
Indem man ihn nicht überschreibt.
Hilft das weiter? Wenn nicht, poste den relevanten Teil deines Codes. Das wäre klarer als die Beschreibung als Text.
Gruß Jan
|
|
|
tnam |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 10.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.08.2020, 14:21
Titel:
|
|
|
|
|
Danke für die schnelle Antwort Jan!
Leider nicht wirklich die Lösung zu meinem Problem. Ich versuche es mal nochmal gründlich zu erklären..
Im beigefügtem Bild sieht man das Simulink und Stateflow Modell. Je nach Input-Größe u wechselt das Stateflow Modell seine States/Zustände. Je nachdem welcher Zustand aktiv ist, erhalte ich andere Werte für definierte Variablen d, f1, f2, t_R, t und state.
Hinter dem Stateflow Chart ist ein MATLAB Function Block nachgeschaltet. Der wertet die Output-Größen von Stateflow als eigene Input-Größen.
Nun sollen bestimmte Mathe Operatoren durchgeführt werden. Der Code sieht wie folgt aus:
Nun, das Problem liegt eventuell auch bei Stateflow. Laut meiner Logik soll für jeden Zustand der entsprechend zurückgelegte Weg berechnet werden, sodass s_EZ (die Summe aller s_R) die Echtzeitposition des Systems abbildet.
Gehe ich aber das Modell Step-weise durch, so wird der Wert von s_R bei jedem Step addiert. Ein Step entspricht 0.2 Sekunden (wahrscheinlich abhängig von Stateflow).
Deshalb möchte ich die Zusatzbedingung einbringen, dass der Wert nur dann addiert wird, wenn sich der "state"-Wert ändert. Somit kann ich sicher gehen, dass der Weg eines States nicht mehrmals summiert wird.
Ich hoffe die ausführliche Beschreibung hilft weiter. Besten Dank!
Beschreibung: |
|
Download |
Dateiname: |
MF_Bsp.JPG |
Dateigröße: |
89.1 KB |
Heruntergeladen: |
227 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.08.2020, 14:42
Titel:
|
|
Hallo,
du brauchst also den state der vorherigen Blockauswertung? Dann würde ich das in einer Variable, z.B. state_old abspeichern und diese Variable als persistent deklarieren.
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 ;)
|
|
|
tnam |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 10.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.08.2020, 18:41
Titel:
|
|
Danke Harald,
ich habe mittlerweile den Matlab Function Block durch ein Simulink Modell ersetzt. Dazu habe ich einfach den Memory Block genutzt.
Dennoch besten Dank für die Antwort. Ich komme bestimmt darauf zurück um das Modell zu optimieren.
|
|
|
|
|
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.
|
|