メインコンテンツ

Simulink.Bus.createMATLABStruct

バスと同じ階層構造と属性を使用する MATLAB 構造体を作成

説明

S = Simulink.Bus.createMATLABStruct(busSource) は、busSource で指定されたバスと同じ階層構造と属性をもつ 1 つ以上の MATLAB® 構造体を作成します。結果として作成される構造体はバスのグラウンド値を使用します。複数のバス端子用の初期化構造体を作成するには、この構文を使用してください。

S = Simulink.Bus.createMATLABStruct(busSource,vals) は、vals で指定された値を使用する 1 つ以上の構造体を作成します。

S = Simulink.Bus.createMATLABStruct(busSource,vals,sdims) は、sdims で指定された次元をもつ 1 つ以上の構造体を作成します。バスの配列についての構造体を作成するには、sdims 引数を含めます。

S = Simulink.Bus.createMATLABStruct(busSource,vals,sdims,scope) は、scope で指定されるデータ ディクショナリ内に 1 つ以上の構造体を作成します。

すべて折りたたむ

BusInitialization という名前のモデル例を開いてコンパイルします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

モデルのプリロード コールバックにより、TopBus などの Simulink.Bus オブジェクトが読み込まれます。このバス オブジェクトは、Unit Delay ブロックを通過するバスに使用されています。

TopBus と同じ階層構造と属性をもつ MATLAB 構造体を作成します。構造体に mstruct という名前を付けます。

mstruct = Simulink.Bus.createMATLABStruct("TopBus")
mstruct = struct with fields:
    A: [1×1 struct]
    B: 0
    C: [1×1 struct]

関数は構造体の各フィールドにグラウンド値 0 を割り当てます。

TopBus.A.A1 に対応するフィールドに値 3 を指定します。

mstruct.A.A1 = 3;

構造体の他のフィールドには、そのまま値 0 を指定します。

mstruct を Unit Delay ブロックの初期条件構造体として指定するには、[初期条件] ブロック パラメーターを mstruct に設定します。

複数の端子でバスの初期化構造体を作成するには、Simulink.Bus.createMATLABStruct 関数で複数の端子ハンドルを使用します。結果として得られる構造体の cell 配列は、グラウンド値を使用します。

BusInitializationTwoPorts という名前のモデル例を開いてコンパイルします。

mdl = "BusInitializationTwoPorts";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitializationTwoPorts model

各 Bus Creator ブロックの出力端子のハンドルを取得します。

bc1 = "BusInitializationTwoPorts/Bus Creator";
ph1 = get_param(bc1,"PortHandles");
out1 = ph1.Outport;

bc2 = "BusInitializationTwoPorts/Bus Creator1";
ph2 = get_param(bc2,"PortHandles");
out2 = ph2.Outport;

各バスの構造体を含む cell 配列を作成するには、Simulink.Bus.createMATLABStruct 関数に端子ハンドルの配列を提供します。

structs = Simulink.Bus.createMATLABStruct([out1 out2])
structs=2×1 cell array
    {1×1 struct}
    {1×1 struct}

バスに対応する端子に基づいて MATLAB 構造体を作成します。部分構造体を使用して、端子に接続するバスのバス要素のサブセットに値を指定します。

BusInitialization という名前のモデル例を開いてコンパイルします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

バス階層内の要素のサブセットに対する値を指定する部分構造体を作成します。部分構造体で Top.A.A1 要素と Top.B 要素の値を指定します。

pstruct = struct("A",struct("A1",4),"B",3)
pstruct = struct with fields:
    A: [1×1 struct]
    B: 3

完全な構造体を作成するには、Simulink.Bus.createMATLABStruct 関数を使用します。

最初の入力引数用に、最上位のバスを生成する Bus Creator ブロック出力端子のハンドルを取得します。

bctop = "BusInitialization/Bus Creator3";
ph = get_param(bctop,"PortHandles");
out = ph.Outport;

2 番目の入力引数で部分構造体を指定します。部分構造体で Top.A.A1 要素と Top.B 要素のグラウンド値をオーバーライドします。

fstruct = Simulink.Bus.createMATLABStruct(out,pstruct)
fstruct = struct with fields:
    A: [1×1 struct]
    B: 3
    C: [1×1 struct]

信号要素が double 以外のデータ型を使用するバスに対して MATLAB 構造体を作成します。部分構造体を使用して要素のサブセットの初期化値を指定します。部分構造体を作成する場合は、フィールドのデータ型を対応する要素のデータ型と一致させます。

BusInitialization という名前のモデル例を開いてコンパイルします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

バス階層内の要素のサブセットに対する値を指定する部分構造体を作成します。部分構造体で要素 Top.BTop.C.C1 の値を指定します。

信号要素 Top.C.C1 ではデータ型 int16 が使用されています。構造体の C.C1 フィールドの値を設定するには、型付き式を使用します。式のデータ型をモデル内の信号のデータ型と一致させます。

pstruct = struct("B",3,"C",struct("C1",int16(5)));

完全な構造体を作成するには、Simulink.Bus.createMATLABStruct 関数を使用します。

最初の入力引数用に、最上位のバスを生成する Bus Creator ブロック出力端子の端子ハンドルを取得します。

bctop = "BusInitialization/Bus Creator3";
ph = get_param(bctop,"PortHandles");
out = ph.Outport;

2 番目の入力引数で部分構造体を指定します。部分構造体で Top.C.C1 要素と Top.B 要素のグラウンド値をオーバーライドします。

fstruct = Simulink.Bus.createMATLABStruct(out,pstruct);

fstruct.C.C1 の値を確認します。

fstruct.C.C1
ans = int16

5

このフィールドでデータ型 int16 が使用されています。

BusInitialization という名前のモデル例を開いてコンパイルします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

モデルのプリロード コールバックにより、TopBus などの Simulink.Bus オブジェクトが読み込まれます。このバス オブジェクトは、Unit Delay ブロックを通過するバスに使用されています。

最上位バスのバス要素のサブセットに対する部分構造体を作成します。

pstruct = struct("A",struct("A1",4),"B",3)  
pstruct = struct with fields:
    A: [1×1 struct]
    B: 3

TopBus という名前の Simulink.Bus オブジェクト、pstruct という名前の部分構造体、および結果として得られる構造体の次元を使用して、完全な構造体を作成します。

fstruct = Simulink.Bus.createMATLABStruct("TopBus",...
    pstruct,[2 3])
fstruct=2×3 struct array with fields:
    A
    B
    C

入力引数

すべて折りたたむ

バス情報のソース。引用符で囲んだ Simulink.Bus オブジェクト名、端子ハンドル、Simulink.Bus オブジェクト名の cell 配列、または端子ハンドルの配列として指定します。

  • Simulink.Bus オブジェクトを指定する場合、その Simulink.Bus オブジェクトは MATLAB ベース ワークスペースまたはモデルで使用されるデータ ディクショナリ内になければなりません。

  • 端子ハンドルを指定する場合、モデルが正常にコンパイルされていなければなりません。

  • バスの配列の場合、端子ハンドルを使用できません。

  • sdims 引数を使用する場合、busSource 引数を Simulink.Bus オブジェクトまたは Simulink.Bus オブジェクトの cell 配列として指定します。

Simulink.Bus オブジェクト名の cell 配列または端子ハンドルの配列を指定すると、1 回の Simulink.Bus.createMATLABStruct の呼び出しで複数の構造体が作成され、構造体の作成に個別の Simulink.Bus.createMATLABStruct の呼び出しを使用するよりもパフォーマンスが向上します。

例: S = Simulink.Bus.createMATLABStruct('BusObject') は、Simulink.Bus オブジェクト名で 1 つのバス ソースを指定します。

例: S = Simulink.Bus.createMATLABStruct({'BusObject','BusObject1'}) は、Simulink.Bus オブジェクト名の cell 配列で複数のバス ソースを指定します。

例: S = Simulink.Bus.createMATLABStruct(ph) は、端子ハンドルで 1 つのバス ソースを指定します。

例: S = Simulink.Bus.createMATLABStruct([ph,ph1]) は、端子ハンドルの配列で複数のバス ソースを指定します。

結果として得られる構造体での要素のサブセットの値。空の行列 ([])、部分構造体、または cell 配列として指定します。cell 配列には、それぞれの指定されたバス情報のソースについての部分構造体または空の行列が含まれていなければなりません。

部分構造体の作成の詳細については、Specify Initial Conditions for Bus Elementsを参照してください。

グラウンド値を使用するには、空の行列を使用します。

例: S = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct)

データ型: struct | cell

結果として得られる構造体の次元。ベクトルとして指定。

各次元要素は 1 以上の整数でなければなりません。vals 引数について部分構造体を指定する場合、各次元要素は、部分構造体において対応する次元要素以上の値でなければなりません。

例: S = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct,[2 3])

例: S = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,2,3})

データ型: double | cell

MATLAB 構造体を格納するデータ ディクショナリ。Simulink.data.Dictionary オブジェクトとして指定します。この引数を使用する前に、関数 Simulink.data.dictionary.create や関数 Simulink.data.dictionary.open を使用してディクショナリを Simulink.data.Dictionary オブジェクトで表しておきます。

scope が空の場合、関数は Bus オブジェクトのソースとして MATLAB ベース ワークスペースを使用します。

例: S = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,1,1},dataDictionaryObject)

出力引数

すべて折りたたむ

バスと同じ信号の階層構造と属性をもつ構造体。MATLAB 構造体または MATLAB 構造体の cell 配列として返されます。

構造体の次元は指定する入力引数によって異なります。

  • busSource 引数のみを指定する場合、次元は 1 になります。

  • vals 引数も指定する場合、次元は vals の次元に一致します。

  • sdims 引数を指定する場合、次元は sdims の次元に一致します。

ヒント

  • スクリプトのループ内など、同じモデルに対して関数 Simulink.Bus.createMATLABStruct を繰り返し使用する場合は、モデルの複数コンパイルを回避するとパフォーマンスを向上させることができます。速度を向上させるには、関数を複数回使用する前にモデルをコンパイル状態にします。たとえば、mymodel という名前のモデルをコンパイル状態にするには、次のコマンドを使用します。

    mymodel([],[],[],'compile')

    MATLAB 構造体の作成後に、次のコマンドを使用してコンパイルを終了します。

    mymodel([],[],[],'term')
  • Simulink.Bus.createMATLABStruct 関数は型エディターで呼び出すことができます。型エディターで、MATLAB 構造体を作成する Simulink.Bus オブジェクトを右クリックします。次に、[MATLAB 構造体の作成] をクリックします。

    MATLAB エディターで MATLAB 構造体を編集できます。この構造体内の値を作成または更新するには、コードを評価します。

  • 関数 Simulink.Bus.createMATLABStruct を使用して、参照モデルの出力の初期値を指定できます。

バージョン履歴

R2010a で導入