Main Content

Simulink.BlockDiagram.getInitialState

ブロック線図から初期状態データを取得する

説明

x0 = Simulink.BlockDiagram.getInitialState(mdlName)mdlName で指定したモデルをコンパイルし、参照モデル内のブロックの状態など、モデル内のブロックの状態の初期値を返します。

  • モデルの [形式] パラメーターの値が [データセット] の場合、x0 は、モデル内のブロックの初期状態情報を含む Simulink.SimulationData.Dataset オブジェクトです。

  • モデルの [形式] パラメーターが [データセット] 以外の値である場合、x0 は、モデル内のブロックの初期状態情報を含む構造体です。

この初期状態情報を使用して、シミュレーションの初期ブロック状態値を指定したり、線形化の初期条件を提供したりできます。状態情報はそのまま使用できます。あるいは、ブロックの状態のサブセットの状態情報を指定する場合に、個々の状態値を変更したり、構造体から状態値を削除したりすることもできます。

初期シミュレーション状態または操作点からモデルをシミュレートするには、代わりに Simulink.op.ModelOperatingPoint オブジェクトの使用を検討してください。ModelOperatingPoint オブジェクトには、ブロックの状態、非表示のブロックの状態、ソルバーの状態、実行エンジンの状態、一部のブロックの出力値など、モデルの操作点に関する完全な情報が含まれています。詳細については、Specify Initial State for Simulationを参照してください。

すべて折りたたむ

モデル vdp を開きます。このモデルは 2 つの Integrator ブロックを使用しています。

mdl = "vdp";
open_system(mdl)

The model vdp.

モデルの [形式] パラメーターは、関数 Simulink.BlockDiagram.getInitialState が構造体を返すのか Simulink.SimulationData.Dataset オブジェクトを返すのかを指定します。パラメーター値を Dataset に設定します。

  1. Simulink® ツールストリップの [モデル化] タブで [モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。

  3. [形式] リストから Dataset を選択します。

  4. [コンフィギュレーション パラメーター] ダイアログ ボックスで [OK] をクリックします。

あるいは、関数 set_param を使用して、SaveFormat パラメーターの値を指定します。

set_param(mdl,"SaveFormat","Dataset")

関数 Simulink.BlockDiagram.getInitialState を使用してモデルのブロックの状態の Dataset オブジェクトを取得します。

initStates = Simulink.BlockDiagram.getInitialState(mdl)
initStates = 
Simulink.SimulationData.Dataset 'xFinal' with 2 elements

                        Name  BlockPath 
                        ____  _________ 
    1  [1x1 State]      ''    vdp/x1   
    2  [1x1 State]      ''    vdp/x2   

  - Use braces { } to access, modify, or add elements using index.

x2 という名前の Integrator ブロックの状態の値を 2 に設定します。

initStates{2}.Values.Data = 2;

x1 という名前の Integrator ブロックの状態情報をもつ要素を削除します。

initStates = removeElement(initStates,1);

変数 initStates を指定します。この変数には、x2 という名前の Integrator ブロックの初期状態値がモデルの初期状態として含まれます。

  1. Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。

  3. [初期状態] を選択します。次に、ボックスに「initStates」と入力します。

  4. [OK] をクリックします。

あるいは、関数 set_param を使用して、LoadInitialState パラメーターおよび InitialState パラメーターを構成します。

set_param(mdl,"LoadInitialState","on","InitialState","initStates")

モデルをシミュレートします。

out = sim(mdl);

両方の Integrator ブロックの出力信号を表示するには、Scope ブロックをダブルクリックします。両方の Integrator ブロックで、初期出力値と初期状態値は共に 2 です。

The Scope block displays the output signals for the Integrator blocks named x1 and x2.

x2 という名前の Integrator ブロックでは、初期状態値 2[初期状態] パラメーターの値から取得されます。x1 という名前の Integrator ブロックでは、初期状態値 2 がブロック パラメーターで指定されています。

blk = strcat(mdl,"/x1");
get_param(blk,"InitialCondition")
ans = 
'2'

モデル vdp を開きます。このモデルは 2 つの Integrator ブロックを使用しています。

mdl = "vdp";
open_system(mdl)

The model vdp.

モデルの [形式] パラメーターは、関数 Simulink.BlockDiagram.getInitialState が構造体を返すのか Simulink.SimulationData.Dataset オブジェクトを返すのかを指定します。パラメーター値を Structure に設定します。

  1. Simulink® ツールストリップの [モデル化] タブで [モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。

  3. [形式] リストから Structure を選択します。

  4. [コンフィギュレーション パラメーター] ダイアログ ボックスで [OK] をクリックします。

あるいは、関数 set_param を使用して、SaveFormat パラメーターの値を指定します。

set_param(mdl,"SaveFormat","Structure")

関数 Simulink.BlockDiagram.getInitialState を使用してモデルのブロックの状態の構造体を取得します。この構造体の signals フィールドに 2 つのブロックの状態 (Integrator ブロックごとに 1 つ) の情報が含まれています。

initStates = Simulink.BlockDiagram.getInitialState(mdl)
initStates = struct with fields:
       time: 0
    signals: [1x2 struct]

各状態の signals 構造体には、モデルで現在使用されている初期値やブロック パスなど、状態に関する情報が含まれています。

initStates.signals(2)
ans = struct with fields:
               values: 0
           dimensions: 1
                label: 'CSTATE'
            blockName: 'vdp/x2'
            stateName: ''
    inReferencedModel: 0
           sampleTime: [0 0]

2 番目のブロックの状態は、x2 という名前の Integrator ブロックに対応しています。values フィールドを 2 に設定します。

initStates.signals(2).values = 2;

x1 という名前の Integrator ブロックの状態に関する情報が含まれた signals フィールド内の構造体を削除します。

initStates.signals(1) = [];

変数 initStates を指定します。この変数には、x2 という名前の Integrator ブロックの初期状態値がモデルの初期状態として含まれます。

  1. Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。

  3. [初期状態] を選択します。次に、ボックスに「initStates」と入力します。

  4. [OK] をクリックします。

あるいは、関数 set_param を使用して、LoadInitialState パラメーターおよび InitialState パラメーターを構成します。

set_param(mdl,"LoadInitialState","on","InitialState","initStates")

モデルをシミュレートします。

out = sim(mdl);

両方の Integrator ブロックの出力信号を表示するには、Scope ブロックをダブルクリックします。Integrator ブロックの初期出力値は、初期状態値です。両方の Integrator ブロックで、初期出力値と初期状態値は共に 2 です。

The Scope block displays the output signals for the Integrator blocks named x1 and x2.

x2 という名前の Integrator ブロックでは、初期状態値 2[初期状態] パラメーターの値から取得されます。x1 という名前の Integrator ブロックでは、初期状態値 2 がブロック パラメーターで指定されています。

blk = strcat(mdl,"/x1");
get_param(blk,"InitialCondition")
ans = 
'2'

入力引数

すべて折りたたむ

モデル名。string または文字ベクトルとして指定します。

データ型: char | string

出力引数

すべて折りたたむ

ブロックの状態の初期値。Simulink.SimulationData.Dataset オブジェクトまたは構造体として返されます。

モデルの [形式] パラメーターの値が [データセット] の場合、初期状態値は Dataset オブジェクトとして返されます。

それ以外の場合、初期状態値は、以下のフィールドが含まれている構造体として返されます。

  • time — シミュレーション時間

  • signals — 構造体の 1 行 n 列の配列 (ここで、n はモデル内のブロックの状態の数)

signals フィールド内の各構造体はブロックの状態を表し、以下のフィールドを含んでいます。

  • values — 状態値

  • dimensions — 状態値の次元

  • label — 状態ラベル

    連続状態の場合、状態ラベルは CSTATE です。S-Function ブロック内の離散状態の場合、および名前を離散状態に割り当てるブロックの場合は、離散状態の名前が表示されます。無名の離散状態の場合、状態ラベルは DSTATE です。

  • blockName — 状態に関連するブロックの絶対パス

  • inReferencedModel — 状態が参照モデル内のブロックに関連しているかどうかを示す論理インジケーター

    1 または true は、状態が参照モデル内のブロックに関連していることを示します。値 0 または false は、状態が最上位モデル内のブロックに関連していることを示します。

  • sampleTime — 状態に関連しているブロックのサンプル時間情報

    値は 12 列の配列です。最初の要素はサンプル時間を示し、2 番目の要素はサンプル時間のオフセットを示しています。

バージョン履歴

R2006b で導入