hasChangedTo
Erkennen von Änderungen in Daten auf einen bestimmten Wert im Stateflow-Diagramm
Beschreibung
gibt tf
= hasChangedTo(data
,value
)1
(true
) zurück, wenn der Wert von data
zu Beginn des vorherigen Zeitschritts nicht gleich value
und zu Beginn des aktuellen Zeitschritts gleich value
ist. Andernfalls gibt der Operator 0
(false
) zurück.
Beispiele
Eingabeargumente
Einschränkungen
Kann nicht in einer Stateflow-Wahrheitstabelle verwendet werden.
Tipps
Wenn mehrere Eingangsereignisse im selben Zeitschritt auftreten, kann der
hasChangedTo
-Operator Änderungen des Datenwerts zwischen den Eingangsereignissen erkennen.Wenn das Diagramm in das Datenobjekt schreibt, aber den Datenwert nicht ändert, gibt der
hasChangedTo
-Operatorfalse
zurück.Der Typ des Stateflow-Diagramms bestimmt den Umfang der Daten, die von den Änderungserkennungsoperatoren unterstützt werden:
Eigenständige Stateflow-Diagramme in MATLAB: nur
Local
In Simulink®-Modellen, Diagramme, die MATLAB als Aktionssprache verwenden: nur
Input
In Simulink-Modellen, Diagramme, die C als Aktionssprache verwenden:
Input
,Output
,Local
oderData Store Memory
In einem eigenständigen Diagramm in MATLAB kann ein Änderungserkennungsoperator Änderungen in Daten erkennen, die in einem Aufruf der Funktion
step
angegeben sind, da diese Änderungen vor Beginn des aktuellen Zeitschritts auftreten. Wenn beispielsweisex
gleich Null ist, gibt der AusdruckhasChangedTo(x,1)
true
zurück, wenn Sie dasch
-Diagramm mit dem folgenden Befehl ausführen:Im Gegensatz dazu kann ein Änderungserkennungsoperator keine Änderungen in Daten erkennen, die durch Zuweisungen in Zustands- oder Übergangsaktionen im gleichen Zeitschritt verursacht werden. Stattdessen erkennt der Operator die Wertänderung zu Beginn des nächsten Zeitschritts.step(ch,x=1);
Wenn Sie in einem Diagramm in einem Simulink-Modell die Diagrammoption Initialize Outputs Every Time Chart Wakes Up aktivieren und eine Ausgabe als Argument des Operators
hasChanged
verwenden, wird immerfalse
zurückgegeben. Weitere Informationen finden Sie unter Initialize outputs every time chart wakes up.Wenn in Diagrammen, die
hasChangedTo
verwenden, das zeilendominierte Array-Layout (row-major array layout) aktiviert ist, führt die Code-Generierung zu einem Fehler. Bevor Sie Code in Diagrammen generieren, diehasChangedTo
verwenden, aktivieren Sie das nach Spalten geordnete Array-Layout (column-major array layout). Siehe Select Array Layout for Matrices in Generated Code.
Versionsverlauf
Eingeführt in R2007a