このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
hasChanged
Stateflow チャートで最後のタイム ステップ以降のデータの変化を検出
説明
は、現在のタイム ステップの開始時における tf
= hasChanged(data
)data
の値が、チャートが起動した最後のタイム ステップの開始時における data
の値と異なる場合、1
(true
) を返します。それ以外の場合、演算子は 0
(false
) を返します。
例
入力引数
制限
Stateflow の真理値表の内部では使用できません。
ヒント
同じタイム ステップで複数の入力イベントが発生する場合、
hasChanged
演算子は入力イベント間のデータ値の変化を検出できます。チャートがデータ オブジェクトに書き込む際にデータ値が変化しない場合、
hasChanged
演算子はfalse
を返します。Stateflow チャートのタイプにより、変化検出演算子がサポートするデータの範囲が決定します。
MATLAB のスタンドアロン Stateflow チャート:
[ローカル]
のみSimulink® モデルで、MATLAB をアクション言語として使用するチャートの場合:
[入力]
のみSimulink モデルで、C をアクション言語として使用するチャートの場合:
[入力]
、[出力]
、[ローカル]
、または[データ ストア メモリ]
MATLAB のスタンドアロン チャートでは、関数
step
の呼び出しで指定されたデータの変化は現在のタイム ステップより前に発生するため、変化検出演算子でこのような変化を検出できます。たとえば、x
がゼロと等しい場合、次のコマンドを使用してチャートch
を実行すると、式hasChanged(x)
はtrue
を返します。一方、同じタイム ステップでのステートまたは遷移アクションでの代入により発生したデータの変化を変化検出演算子で検出することはできません。代わりに、この演算子は次のタイム ステップの開始時における値の変化を検出します。step(ch,x=1);
Simulink モデルのチャートで、[チャート実行ごとに出力を初期化] チャート オプションを有効にした場合は、出力を
hasChanged
演算子の引数として使用すると必ずfalse
が返されます。詳細については、チャート実行ごとに出力を初期化を参照してください。hasChanged
を使用するチャート内で行優先の配列レイアウトが有効になっている場合、コード生成でエラーが発生します。hasChanged
を使用するチャート内でコードを生成する前に、列優先の配列レイアウトを有効にします。生成コード内の行列の配列レイアウトを選択を参照してください。
バージョン履歴
R2007a で導入