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




