最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink.Bus.createMATLABStruct

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

説明

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

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

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

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

すべて折りたたむ

モデル ex_bus_initial_conditions を開いてシミュレーションを実行します。

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

ex_bus_initial_conditions モデルが読み込むバス オブジェクト Top を使って MATLAB 構造体を作成します。

mStruct = Simulink.Bus.createMATLABStruct('Top');

バス A のバス要素 A1 に対応する構造体 mStruct のフィールドに値を設定します。

mStruct.A.A1 = 3;
mStruct.A
ans = 

  struct with fields:

    A1: 3
    A2: [5x1 int8]

Simulink は、構造体内の他のフィールドを、対応するバス要素のグラウンド値に設定します。

Unit Delay ブロックの初期状態構造体として mStruct を使用することもできます。

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

モデル ex_bus_initial_conditions を開いてシミュレーションを実行します。

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Constant5 というラベルの付いたブロックが生成する C1 信号要素は、データ型 int16 を使用します。

Top バス信号を生成する Bus Creator ブロック端子用の端子ハンドルを検出します。

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles');

TopBus ブロックによって作成されたバス信号の要素のサブセット値を指定する部分構造体を作成します。C.C1 フィールドの値を設定するには、型付き式を使用します。表現のデータ型をモデルの信号要素のデータ型 (int16) と一致させます。

PartialstructForK = struct('B',3,'C',struct('C1',int16(5)));

TopBus ブロックの端子ハンドル (ph) を使用して完全な構造体を作成します。C.C1 要素および B 要素のグラウンド値をオーバーライドします。

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK);

出力構造体のフィールド C.C1 は、引き続きデータ型 int16 を使用します。

モデル ex_bus_initial_conditions を開いてシミュレーションを実行します。

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

TopBus ブロックによって作成されたバスのバス要素のサブセットに対して部分構造体を作成します。

PartialStructForK = struct('A',struct('A1',4),'B',3)
PartialStructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

バス オブジェクト Top、部分構造体および結果として得られる構造体の次元を使用して、MATLAB 構造体を作成します。

structFromBus = Simulink.Bus.createMATLABStruct...
     ('Top',PartialStructForK,[2 3])
structFromBus = 

  2x3 struct array with fields:

    A
    B
    C

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

モデル ex_two_outports_create_struct を開いてシミュレーションを実行します。

open_system('ex_two_outports_create_struct')
sim('ex_two_outports_create_struct');

Bus Creator ブロック (Bus1 および Bus2) に対する端子ハンドルを探します。

ph_1 = get_param...
     ('ex_two_outports_create_struct/Bus Creator','PortHandles');
ph_2 = get_param...
     ('ex_two_outports_create_struct/Bus Creator1','PortHandles');

端子ハンドルの配列を使用して MATLAB® 構造体を作成します。

mStruct = Simulink.Bus.createMATLABStruct([ph_1.Outport ph_2.Outport])
mStruct =

  2x1 cell array

    {1x1 struct}
    {1x1 struct}

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

モデル ex_bus_initial_conditions を開いてシミュレーションを実行します。

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Top バス信号を生成する Bus Creator ブロック端子用の端子ハンドルを検出します。ハンドル Outport が必要です。

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles')
ph = 

  struct with fields:

      Inport: [29.0007 31.0007 43.0007]
     Outport: 44.0007
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []
       Reset: []

TopBus ブロックによって作成されたバス信号に対して部分構造体を作成します。部分構造体を使用して、バス要素のサブセットに値を指定できます。

PartialstructForK = struct('A',struct('A1',4),'B',3)
PartialstructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

構造体フィールド Top.B および Top.A によって表されるバス要素は、バス階層で同じレベルです。この部分構造体を使用して、B および A のバス信号要素のグラウンド値をオーバーライドできます。

バス オブジェクトまたはバス端子から構造体を作成するときに、オプションの引数として部分構造体を使用できます。

TopBus ブロックの端子ハンドル (ph) を使用して MATLAB 構造体を作成します。A.A1 および B バス要素のグラウンド値をオーバーライドします。

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK)
mStruct = 

  struct with fields:

    A: [1x1 struct]
    B: 3
    C: [1x1 struct]

入力引数

すべて折りたたむ

バス情報のソース。Bus オブジェクト名、端子ハンドル、Bus オブジェクト名の cell 配列、または端子ハンドルの配列として指定します。

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

  • 端子ハンドルを使用する場合、この関数を使用する前に、モデルを正常にコンパイルしなければなりません。端子ハンドルのデータ型は double です。

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

  • dims 引数を使用する場合、buses 引数には、Bus オブジェクトまたは Bus オブジェクトの cell 配列を使用します。

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

例: struct = Simulink.Bus.createMATLABStruct('BusObject')

例: structs = Simulink.Bus.createMATLABStruct({'BusObject','BusObject1'})

例: struct = Simulink.Bus.createMATLABStruct(portHandle)

例: structs = Simulink.Bus.createMATLABStruct([portHandle,portHandle1])

データ型: double | char | string | struct | cell

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

部分構造体の作成の詳細については、初期化用の部分構造体の作成を参照してください。

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

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

データ型: struct | cell

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

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

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

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

データ型: double | cell

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

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

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

出力引数

すべて折りたたむ

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

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

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

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

  • dims 引数を指定した場合、dims で指定される次元になります。

ヒント

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

    vdp([],[],[],'compile')

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

    vdp([],[],[],'term')
  • 次のいずれかの方法を使用して、バス エディターを使用して関数 Simulink.Bus.createMATLABStruct を実行できます。

    • [ファイル][MATLAB 構造体の作成] メニュー項目を選択します。

    • 完全な MATLAB 構造体を作成する Bus オブジェクトを選択します。その後、ツール バーで [MATLAB 構造体の作成] ボタン をクリックします。

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

  • 関数 Simulink.Bus.createMATLABStruct を使用して、参照モデルの出力の初期値を指定できます。詳細は、「モデル参照によるデータ管理の詳細ワークフロー」例の「参照モデル: バス出力の初期値の設定」の節を参照してください。

R2010a で導入