Simulink.BlockDiagram.getInitialState
ブロック線図から初期状態データを取得する
説明
は x0
= Simulink.BlockDiagram.getInitialState(mdlName
)mdlName
で指定したモデルをコンパイルし、参照モデル内のブロックの状態など、モデル内のブロックの状態の初期値を返します。
モデルの [形式] パラメーターの値が
[データセット]
の場合、x0
は、モデル内のブロックの初期状態情報を含むSimulink.SimulationData.Dataset
オブジェクトです。モデルの [形式] パラメーターが
[データセット]
以外の値である場合、x0
は、モデル内のブロックの初期状態情報を含む構造体です。
この初期状態情報を使用して、シミュレーションの初期ブロック状態値を指定したり、線形化の初期条件を提供したりできます。状態情報はそのまま使用できます。あるいは、ブロックの状態のサブセットの状態情報を指定する場合に、個々の状態値を変更したり、構造体から状態値を削除したりすることもできます。
初期シミュレーション状態または操作点からモデルをシミュレートするには、代わりに Simulink.op.ModelOperatingPoint
オブジェクトの使用を検討してください。ModelOperatingPoint
オブジェクトには、ブロックの状態、非表示のブロックの状態、ソルバーの状態、実行エンジンの状態、一部のブロックの出力値など、モデルの操作点に関する完全な情報が含まれています。詳細については、Specify Initial State for Simulationを参照してください。
例
Dataset
オブジェクトを使用したブロックの状態の初期値の指定
モデル vdp
を開きます。このモデルは 2 つの Integrator ブロックを使用しています。
mdl = "vdp";
open_system(mdl)
モデルの [形式] パラメーターは、関数 Simulink.BlockDiagram.getInitialState
が構造体を返すのか Simulink.SimulationData.Dataset
オブジェクトを返すのかを指定します。パラメーター値を Dataset
に設定します。
Simulink® ツールストリップの [モデル化] タブで [モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。
[形式] リストから
Dataset
を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [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 ブロックの初期状態値がモデルの初期状態として含まれます。
Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。
[初期状態] を選択します。次に、ボックスに「
initStates
」と入力します。[OK] をクリックします。
あるいは、関数 set_param
を使用して、LoadInitialState
パラメーターおよび InitialState
パラメーターを構成します。
set_param(mdl,"LoadInitialState","on","InitialState","initStates")
モデルをシミュレートします。
out = sim(mdl);
両方の Integrator ブロックの出力信号を表示するには、Scope ブロックをダブルクリックします。両方の Integrator ブロックで、初期出力値と初期状態値は共に 2
です。
x2
という名前の Integrator ブロックでは、初期状態値 2
が [初期状態] パラメーターの値から取得されます。x1
という名前の Integrator ブロックでは、初期状態値 2
がブロック パラメーターで指定されています。
blk = strcat(mdl,"/x1"); get_param(blk,"InitialCondition")
ans = '2'
構造体を使用したブロックの状態の初期値の指定
モデル vdp
を開きます。このモデルは 2 つの Integrator ブロックを使用しています。
mdl = "vdp";
open_system(mdl)
モデルの [形式] パラメーターは、関数 Simulink.BlockDiagram.getInitialState
が構造体を返すのか Simulink.SimulationData.Dataset
オブジェクトを返すのかを指定します。パラメーター値を Structure
に設定します。
Simulink® ツールストリップの [モデル化] タブで [モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。
[形式] リストから
Structure
を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [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 ブロックの初期状態値がモデルの初期状態として含まれます。
Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。
[初期状態] を選択します。次に、ボックスに「
initStates
」と入力します。[OK] をクリックします。
あるいは、関数 set_param
を使用して、LoadInitialState
パラメーターおよび InitialState
パラメーターを構成します。
set_param(mdl,"LoadInitialState","on","InitialState","initStates")
モデルをシミュレートします。
out = sim(mdl);
両方の Integrator ブロックの出力信号を表示するには、Scope ブロックをダブルクリックします。Integrator ブロックの初期出力値は、初期状態値です。両方の Integrator ブロックで、初期出力値と初期状態値は共に 2
です。
x2
という名前の Integrator ブロックでは、初期状態値 2
が [初期状態] パラメーターの値から取得されます。x1
という名前の Integrator ブロックでは、初期状態値 2
がブロック パラメーターで指定されています。
blk = strcat(mdl,"/x1"); get_param(blk,"InitialCondition")
ans = '2'
入力引数
mdlName
— モデル名
string | 文字ベクトル
モデル名。string または文字ベクトルとして指定します。
データ型: char
| string
出力引数
x0
— ブロックの状態の初期値
Simulink.SimulationData.Dataset
オブジェクト | 構造体
ブロックの状態の初期値。Simulink.SimulationData.Dataset
オブジェクトまたは構造体として返されます。
モデルの [形式] パラメーターの値が [データセット]
の場合、初期状態値は Dataset
オブジェクトとして返されます。
それ以外の場合、初期状態値は、以下のフィールドが含まれている構造体として返されます。
time
— シミュレーション時間signals
— 構造体の1
行 n 列の配列 (ここで、n はモデル内のブロックの状態の数)
signals
フィールド内の各構造体はブロックの状態を表し、以下のフィールドを含んでいます。
values
— 状態値dimensions
— 状態値の次元label
— 状態ラベル連続状態の場合、状態ラベルは
CSTATE
です。S-Function ブロック内の離散状態の場合、および名前を離散状態に割り当てるブロックの場合は、離散状態の名前が表示されます。無名の離散状態の場合、状態ラベルはDSTATE
です。blockName
— 状態に関連するブロックの絶対パスinReferencedModel
— 状態が参照モデル内のブロックに関連しているかどうかを示す論理インジケーター値
1
またはtrue
は、状態が参照モデル内のブロックに関連していることを示します。値0
またはfalse
は、状態が最上位モデル内のブロックに関連していることを示します。sampleTime
— 状態に関連しているブロックのサンプル時間情報値は
1
行2
列の配列です。最初の要素はサンプル時間を示し、2 番目の要素はサンプル時間のオフセットを示しています。
バージョン履歴
R2006b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)