このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,Stateflow®構造体の内容にアクセスして変更する方法を説明します。Stateflow構造体を使用すると,サイズや型の異なるデータを単一の
オブジェクトにまとめることができます。ドット表記と数値インデックスを使用して,Stateflow構造体の内容にアクセスし,変更することができます。詳細については,Stateflow構造体を介したバス信号へのアクセスを参照してください。金宝app仿真软件。公共汽车
(金宝app模型)
Stateflow構造体のサブ構造体およびフィールドにインデックスを付けるには,ドット表記を使用します。名前の最初の部分は親オブジェクトを識別します。後続の部分は,階層パスに沿って子を識別します。親が構造体に該当する場合は,子は個別のフィールドに該当するか,他の構造体を含むフィールド(サブ構造体)に該当します。Stateflow構造体のフィールド名は,構造体を定義する金宝app仿真软件。公共汽车
オブジェクトの要素名と一致します。
たとえば,このモデル内のチャートには,入力構造体(在
)、出力構造体 (出
2)、およびつのローカル構造体(localbus
とsubbu
)が含まれています。
チャートは金宝app仿真软件。公共汽车
オブジェクトBusObject
を使用して,入力構造体在
、出力構造体出
,ローカル構造体localbus
を定義します。これらの構造体には某人
、一个
、b
、c
の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
に格納します。その後,チャートはローカル構造体localbus
とsubbu
の値を結合し,出力構造体出
に書き込みます。
グラフィカル関数abc2sb
はBusObject
型の構造体を取り,subbu
型の構造体を返します。この関数は,関数の入力のフィールド一个
、b
,およびc
の値を結合して,int8
型の3行3列の行列に再配置します。その後,この関数はこの行列を出力構造体のフィールド避署
として格納します。
MATLAB®関数sb2abc
はsubbu
型の構造体を取り,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;结束
この例をシミュレートすると,チャートは入力バスのフィールド某人
の値を使用して,出力バスの一个
、b
、c
の各フィールドに入力します。また,チャートは入力バスの一个
、b
、c
の各フィールドの値を使用して,出力バスのフィールド某人
に入力します。
结构体
|金宝app仿真软件。公共汽车
(金宝app模型)