主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

Stateflow構造体へのインデックス付けと値の割り当て

この例では,Stateflow®構造体の内容にアクセスして変更する方法を説明します。Stateflow構造体を使用すると,サイズや型の異なるデータを単一の金宝app仿真软件。公共汽车(金宝app模型)オブジェクトにまとめることができます。ドット表記と数値インデックスを使用して,Stateflow構造体の内容にアクセスし,変更することができます。詳細については,Stateflow構造体を介したバス信号へのアクセスを参照してください。

サブ構造体とフィールドのインデックス付け

Stateflow構造体のサブ構造体およびフィールドにインデックスを付けるには,ドット表記を使用します。名前の最初の部分は親オブジェクトを識別します。後続の部分は,階層パスに沿って子を識別します。親が構造体に該当する場合は,子は個別のフィールドに該当するか,他の構造体を含むフィールド(サブ構造体)に該当します。Stateflow構造体のフィールド名は,構造体を定義する金宝app仿真软件。公共汽车オブジェクトの要素名と一致します。

たとえば,このモデル内のチャートには,入力構造体()、出力構造体 (2)、およびつのローカル構造体(localbussubbu)が含まれています。

  • チャートは金宝app仿真软件。公共汽车オブジェクトBusObjectを使用して,入力構造体、出力構造体,ローカル構造体localbusを定義します。これらの構造体には某人一个bcの4つのフィールドがあります。フィールド某人金宝app仿真软件。公共汽车オブジェクトsubbuから定義されたサブ構造体です。

  • チャートは金宝app仿真软件。公共汽车オブジェクトsubbuを使用して,ローカル構造体subbuを定義します。この構造体には避署という1つのフィールドがあります。

次のリストは,これらの構造体のフィールドにインデックスを付けるために,Stateflowチャートでシンボルをドット表記で解決する方法を示しています。

  • in.c——入力構造体のフィールドc

  • out.sb——出力構造体のサブ構造体某人

  • 深夜(1)——入力構造体のベクトル場一个の最初の値。

  • subbus.ele (2, 2)——ローカル構造体subbuのフィールド避署の2行2列目の値。

  • in.sb.ele(3、4)——サブ構造体in.sbのフィールド避署の3行4列目の値。

構造体とフィールドへの値の代入

输入以外のスコープをもつStateflow構造体,サブ構造体,および構造体のフィールドに値を代入できます。

  • ある構造体を別の構造体に代入するには,両方の構造体を,ベースワークスペース内の同じ金宝app仿真软件。公共汽车オブジェクトから定義します。

  • ある構造体を別の構造体のサブ構造体に代入するには(またはその逆),同じ金宝app仿真软件。公共汽车オブジェクトから構造体とサブ構造体を定義します。

  • ある構造体のフィールドを別の構造体のフィールドに代入するには,両方のフィールドの型とサイズが同じでなければなりません。Stateflow構造体は,異なる金宝app仿真软件。公共汽车オブジェクトから定義できます。

次のリストは,この例の構造体指定に基づいて,構造体の代入が有効か無効かを示しています。

  • 在= localbus;——無効です。入力構造体には書き込みできません。

  • = localbus;——有効です。localbusの両方が同じ金宝app仿真软件。公共汽车オブジェクトBusObjectから定義されています。

  • subbu =;——無効です。構造体subbuは,別々の金宝app仿真软件。公共汽车オブジェクトから定義されています。

  • subbu = in.sb;——有効です。構造体subbuとサブ構造体in.sbは,同じ金宝app仿真软件。公共汽车オブジェクトsubbuから定義されています。

  • in.sb= subbus;——無効です。入力構造体のサブ構造体には書き込みできません。

  • out.sb= subbus;——有効です。サブ構造体out.sbと構造体subbuは,同じ金宝app仿真软件。公共汽车オブジェクトsubbuから定義されています。

  • in.c = out.c;——無効です。入力構造体のフィールドには書き込みできません。

  • out.sb.ele = subbus.ele;——有効です。フィールドout.sb.eleの型とサイズは,フィールドsubbus.eleと同じです(int8型の3行3列の行列)。

  • localbus.a (1) = in.c;——有効です。値localbus.a (1)の型とサイズは,フィールドin.cと同じです(型のスカラー)。

たとえば,チャートはステート一个の条目アクションで関数abc2sbおよびsb2abcを呼び出し,その結果をローカル構造体localbusおよびsubbuに格納します。その後,チャートはローカル構造体localbussubbuの値を結合し,出力構造体に書き込みます。

グラフィカル関数abc2sbBusObject型の構造体を取り,subbu型の構造体を返します。この関数は,関数の入力のフィールド一个b,およびcの値を結合して,int8型の3行3列の行列に再配置します。その後,この関数はこの行列を出力構造体のフィールド避署として格納します。

MATLAB®関数sb2abcsubbu型の構造体を取り,BusObject型の構造体を返します。この関数は入力から得たフィールド避署の値を,ベクトル3行2列の行列,スカラーの3つの要素に分解します。この関数は,金宝app仿真软件。公共汽车オブジェクトBusObjectと同じ構造体をもつローカルのMATLAB结构体Yにこれらの要素を格納します。その後,この関数はMATLAB结构体Yの値を出力構造体yに代入します。

函数y = sb2abc (u)
%从输入结构中提取数据
E = int8(魔法(3));=双(u.ele (1:2, 1));B = uint8 (u.ele (: 2:3));C =双(u.ele (3,1));
%创建本地结构
X =结构(“避署”, E);Y =结构(“某人”, X,“一个”一个,“b”B“c”C);
%为输出结构赋值
y = y;结束

シミュレーションの実行

この例をシミュレートすると,チャートは入力バスのフィールド某人の値を使用して,出力バスの一个bcの各フィールドに入力します。また,チャートは入力バスの一个bcの各フィールドの値を使用して,出力バスのフィールド某人に入力します。

参考

|(金宝app模型)

関連するトピック