このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
hasChangedTo
指定した値へのデータの変化を検出する
説明
tf = hasChangedTo(
は、data_name
,value
)data_name
の値が前のタイム ステップの開始時点では指定したvalue
とは異なり、現在のタイム ステップの開始時点でvalue
と等しくなっている場合に 1 (true
) を返します。それ以外の場合、演算子は 0 (false
) を返します。
引数data_name
には次を指定できます。
スカラー変数。
行列または行列の要素。
data_name
が行列の場合、演算子がtrue
を返すのは、演算子がdata_name
のいずれかの要素における変化を検出し、data_name
の新しい値がvalue
と等しい場合です。数字、または定数の整数として評価される式を使用して、行列の要素にインデックス付けします。ベクトルおよび行列でサポートされている演算を参照してください。
構造体または構造体のフィールド。
data_name
が構造体の場合、変化検出演算子がtrue
を返すのは、演算子がdata_name
のいずれかの要素における変化を検出し、data_name
の新しい値がvalue
と等しい場合です。ドット表記を使用して構造体内のフィールドにインデックス付けします。Stateflow 構造体へのインデックス付けと値の割り当てを参照してください。
構造体のフィールドまたは行列の要素の有効な組み合わせ。
引数data_name
には、自明ではない式やカスタム コード変数は指定できません。
メモ
MATLAB®のスタンドアロン チャートは、行列の要素または構造体内のフィールドでの変化検出をサポートしません。
引数value
には、data_name
と同程度の値として解決される任意の式を指定できます。
data_name
がスカラーの場合、value
はスカラー値として解決されなければなりません。data_name
が行列の場合、value
は、data_name
と同じ次元の行列値として解決されなければなりません。あるいは、C をアクション言語として使用するチャートで、
value
をスカラー値として解決することができます。チャートはスカラー拡張を使用して、要素がすべてvalue
によって指定されている値に等しい行列とdata_name
を比較します。行列のすべての要素への値の代入を参照してください。data_name
が構造体の場合、value
は、フィールドの仕様がdata_name
と正確に一致する構造体の値として解決されなければなりません。
例
ヒント
同じタイム ステップで複数の入力イベントが発生する場合、
hasChangedTo
演算子は入力イベント間のデータ値の変化を検出できます。チャートがデータ オブジェクトに書き込む際にデータ値が変化しない場合、
hasChangedTo
演算子はfalse
を返します。Stateflow®チャートのタイプにより、変化検出演算子がサポートするデータの範囲が決定します。
MATLAB のスタンドアロン Stateflow チャート:
[ローカル]
のみ金宝app®モデルで、MATLAB をアクション言語として使用するチャートの場合:
[入力]
のみ金宝app仿真软件モデルでCをアクション言語として使用するチャートの場合:
[入力]
、[出力]
、[ローカル]
、または[データ ストア メモリ]
MATLAB のスタンドアロン チャートでは、関数
step
の呼び出しで指定されたデータの変化は現在のタイム ステップより前に発生するため、変化検出演算子でこのような変化を検出できます。たとえば、x
がゼロと等しい場合、次のコマンドを使用してチャートch
を実行すると式hasChangedTo(x,1)
はtrue
を返します。step(ch,'x',1);
Simulink モデルのチャートで、[チャート起動ごとに出力を初期化]チャート オプションを有効にした場合は、出力を
hasChanged
演算子の引数として使用すると必ずfalse
が返されます。詳細については、チャート起動ごとに出力を初期化を参照してください。hasChangedTo
を使用するチャート内で行優先の配列レイアウトが有効になっている場合、コード生成でエラーが発生します。hasChangedTo
を使用するチャート内でコードを生成する前に、列優先の配列レイアウトを有効にします。生成コード内の行列の配列レイアウトを選択を参照してください。