このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
sim
Simulink モデルのプログラムによるシミュレーションの実行とスクリプト化
構文
説明
Simulink.SimulationInput
オブジェクトの構文
は、1 つ以上の simout
= sim(simin
)Simulink.SimulationInput
オブジェクトで定義されたプロパティに従って Simulink® モデルの 1 つ以上のシミュレーションを実行します。
simin
がスカラーのSimulink.SimulationInput
オブジェクトの場合、simout
はスカラーのSimulink.SimulationOutput
オブジェクトになります。simin
がSimulink.SimulationInput
オブジェクトのベクトル、行列、または配列の場合、simout
はsimin
と同じ次元をもつSimulink.SimulationOutput
オブジェクトのベクトル、行列、または配列になります。
SimulationInput
オブジェクトを使用してシミュレーションのオプションや入力を構成できます。これには以下が含まれます。
シミュレートするモデル
外部入力データのソースの変数またはファイル
シミュレーションに使用するブロック パラメーターの値
シミュレーションに使用するモデル コンフィギュレーション パラメーターの値
SimulationInput
オブジェクトのプロパティでモデルまたはブロックのパラメーターの値を変更すると、その値がシミュレーション中に変更され、シミュレーションの終了時に元に戻されます。
SimulationInput
オブジェクトを使用してプログラミングによるシミュレーションを構成すると、使用する関数を sim
から parsim
や batchsim
などの他の関数に簡単に切り替えることができます。
詳細については、プログラムによるシミュレーションの実行を参照してください。
は、1 つ以上の名前と値の引数を使用して指定された追加のオプションを使用して、simout
= sim(simin
,Name=Value
)Simulink.SimulationInput
オブジェクト simin
で定義されたプロパティに従ってモデルをシミュレートします。
Simulink.SimulationInput
の構文でサポートされる名前と値の引数のリストについては、Simulink.SimulationInput オブジェクトの構文を参照してください。
モデルの構文
は、モデルの現在のコンフィギュレーション パラメーターとブロック パラメーターの値を使用してモデル simout
= sim(mdl
)mdl
をシミュレートします。
[単一のシミュレーション出力] パラメーターがモデルで有効になっている場合、
simout
はSimulink.SimulationOutput
オブジェクトになります。[単一のシミュレーション出力] パラメーターがモデルで有効になっていない場合、
simout
はシミュレーション時間を格納したベクトルになります。詳細については、複数の出力引数を返す構文は非推奨を参照してください。
は、1 つ以上の名前と値の引数を使用して指定されたオプションによってモデル simout
= sim(mdl
,Name=Value
)mdl
をシミュレートします。たとえば、パラメーターの名前と値を名前と値の引数として指定することで、シミュレーション用のモデル コンフィギュレーション パラメーターの値を変更できます。
関数 sim
に入力を提供してモデル コンフィギュレーション パラメーターを変更すると、その変更がシミュレーション中に適用され、シミュレーションの終了時に元に戻されます。
モデルの構文でサポートされる名前と値の引数のリストについては、モデルの構文を参照してください。
は、構造体 simout
= sim(mdl
,paramstruct
)paramstruct
で指定されたモデル コンフィギュレーション パラメーターの値を使用してモデル mdl
をシミュレートします。
例
Simulink.SimulationInput
オブジェクトを使用したシミュレーションの構成
Simulink.SimulationInput
オブジェクトを使用して、シミュレートするモデルとは別個にシミュレーション用の構成を保存できます。Simulink.SimulationInput
オブジェクトの構成が、シミュレーション用にモデルに適用されます。シミュレーション後に、変更されたモデル設定は元の値に戻ります。
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl)
モデル IntegrateSine
のシミュレーション構成を保存するための Simulink.SimulationInput
オブジェクトを作成します。
simIn = Simulink.SimulationInput(mdl);
関数 setModelParameter
を使用して、ode45
ソルバーを使用し、終了時間 20
秒までシミュレートするように SimulationInput
オブジェクトを構成します。
simIn = setModelParameter(simIn,"Solver","ode45",... "StopTime","20");
関数 setBlockParameter
を使用して、Sine Wave ブロックの "Amplitude" パラメーターを 2
に設定するように SimulationInput
オブジェクトを構成します。
blk = strcat(mdl,"/Sine Wave"); simIn = setBlockParameter(simIn,blk,"Amplitude","2");
Simulink.SimulationInput
オブジェクト simIn
に保存されている構成を使用してモデルをシミュレートします。
out = sim(simIn);
モデルは、ode45
ソルバーおよび Sine Wave ブロックの振幅 2
を使用して 20
秒間シミュレートします。
高速リスタートを使用したシミュレーションの実行セット
Simulink.SimulationInput
オブジェクトの配列を使用してシミュレーションのセットを構成すると、関数 sim
の単一の呼び出しにより、高速リスタートを使用してシミュレーションのセットを実行できます。高速リスタートでは、シミュレーションの複数の実行間でモデルをコンパイル済みの状態のままにすることで、シミュレーションの時間が短縮されます。
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl)
6 つのシミュレーションのセットを実行し、各シミュレーションで Sine Wave ブロックに異なる周波数値を使用するとします。シミュレーションの周波数値を含むベクトルを作成します。
freqs = [0.5 1 1.5 2 2.5 3];
ブロック パラメーターを調整する場合は、変数を使用してパラメーターの値を定義できます。次に、ブロック パラメーターを調整するために、変数の値を変更します。
Sine Wave ブロックの "Frequency" パラメーターの値に使用する変数 freq
を定義します。初期変数値には、現在のパラメーター値を使用します。
blk = mdl + "/Sine Wave"; freq = str2double(get_param(blk,"Frequency"));
Sine Wave ブロックの Frequency
パラメーター値を freq
に設定します。
set_param(blk,"Frequency","freq")
for
ループで 6 つの Simulink.SimulationInput
オブジェクトの配列を作成し、関数 setVariable
を使用して周波数のベクトルからの値を使用するように各オブジェクトを構成します。
for k = length(freqs):-1:1 simIn(k) = Simulink.SimulationInput(mdl); simIn(k) = setVariable(simIn(k),"freq",freqs(k)); end
関数 sim
を使用して SimulationInput
オブジェクト simIn
の配列で定義されているシミュレーションを実行します。名前と値の引数 UseFastRestart
を使用して高速リスタートを有効にします。名前と値の引数 UseFastRestart
は、最初の入力引数が Simulink.SimulationInput
オブジェクトである場合にのみサポートされます。最初の引数がモデルの名前である場合に高速リスタートを使用するには、名前と値の引数 FastRestart
を使用します。
out = sim(simIn,"UseFastRestart","on");
[28-Feb-2023 11:45:06] Running simulations... [28-Feb-2023 11:45:11] Completed 1 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 2 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 3 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 4 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 5 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 6 of 6 simulation runs
進行状況メッセージを表示せずにシミュレーションの同じセットを実行するには、名前と値の引数 ShowProgress
を off
として指定します。
out = sim(simIn,"UseFastRestart","on","ShowProgress","off");
シミュレーション マネージャーを使用してシミュレーションの進行状況を監視するには、名前と値の引数 ShowSimulationManager
を on
として指定します。シミュレーション マネージャーの詳細については、シミュレーション マネージャーを参照してください。
out = sim(simIn,"UseFastRestart","on",... "ShowProgress","off","ShowSimulationManager","on");
シミュレーション出力 out
は、各シミュレーションのメタデータおよび結果を含む Simulink.SimulationOutput
オブジェクトの配列です。出力配列の SimulationOutput
オブジェクトの順序は、入力配列の SimulationInput
オブジェクトの順序に対応しています。たとえば、インデックス 1
の SimulationOutput
オブジェクトには、インデックス 1
の SimulationInput
オブジェクトを使用して構成されたシミュレーションの結果が含まれます。
最初のシミュレーションの結果についてログに記録された出力信号にアクセスします。そのシミュレーションでは周波数値 0.5
が使用されました。
youtPt5 = out(1).yout
youtPt5 = Simulink.SimulationData.Dataset 'yout' with 1 element Name BlockPath ______ _____________________ 1 [1x1 Signal] output IntegrateSine/Outport - Use braces { } to access, modify, or add elements using index.
現在の構成を使用したモデルのシミュレート
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl);
現在のコンフィギュレーション パラメーター値を使用してモデルをシミュレートします。
out = sim(mdl);
シミュレーションは 10
秒間実行され、振幅 1
の正弦波が積分されます。
関数 set_param
を使用して、モデルのモデル コンフィギュレーション パラメーター値およびブロック パラメーター値を変更できます。
ode45
ソルバーおよび終了時間 20
秒を使用するようにモデルを構成します。
set_param(mdl,"Solver","ode45","StopTime","20")
Sine Wave ブロックの "Amplitude" パラメーターを 2
に設定します。
blk = strcat(mdl,"/Sine Wave"); set_param(blk,"Amplitude","2")
関数 set_param
を使用してコンフィギュレーション パラメーター値またはブロック パラメーター値を変更すると、その変更がブロック線図に適用され、モデル ファイルで変更が未保存 (ダーティ) になります。関数 sim
を再度呼び出すと、モデルを保存していなくても、シミュレーションは現在のモデル コンフィギュレーションの一部である新しいパラメーター値を使用します。
out2 = sim(mdl);
シミュレーションは 20
秒間実行され、振幅 2
の正弦波が積分されます。
名前と値の引数を使用したシミュレーションの構成
関数 sim
の名前と値の引数としてシミュレーションのコンフィギュレーション パラメーターを指定することで、モデル コンフィギュレーション パラメーター値で異なる値を使用するようにモデルのシミュレーションを構成できます。指定したパラメーター値はそのシミュレーションに適用されますが、シミュレーションが完了すると元に戻されます。
関数 sim
の名前と値の引数として指定できるのはモデル コンフィギュレーション パラメーター値のみであり、ブロック パラメーター値は指定できません。単一の入力でシミュレーションのモデル コンフィギュレーション パラメーターの値、ブロック パラメーターの値、および変数の値を指定するには、代わりに Simulink.SimulationInput
オブジェクトを使用します。
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl);
ソルバー ode45
および終了時間 20
秒を使用してモデルをシミュレートするものとします。関数 sim
の名前と値の引数としてシミュレーションの Solver
値および StopTime
値を指定します。
out = sim(mdl,"Solver","ode45","StopTime","20");
モデルでソルバー ode45
を使用してシミュレーション時間 20
秒までシミュレートします。
コンフィギュレーション パラメーターの構造体を使用したシミュレーションの構成
モデル コンフィギュレーション パラメーターの名前と値の構造体を使用してモデルのシミュレーションを構成できます。構造体内のコンフィギュレーション パラメーター値が、シミュレーション用にモデルに適用されます。シミュレーション後に、変更されたモデル設定は元の値に戻ります。
構造体の入力で指定できるのはモデル コンフィギュレーション パラメーター値のみであり、シミュレーションで使用する別のブロック パラメーター値や変数値は指定できません。単一の入力でシミュレーションのモデル コンフィギュレーション パラメーターの値、ブロック パラメーターの値、および変数の値を指定するには、代わりに Simulink.SimulationInput
オブジェクトを使用します。
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl)
ode45
ソルバーおよび終了時間 20
秒を使用するようにシミュレーションを構成する構造体 SimConfig
を作成します。構造体には、シミュレーションで変更する各コンフィギュレーション パラメーターのフィールドが含まれています。各フィールドの名前は各パラメーターのプログラム上の名前に対応しています。各フィールドの値ではシミュレーションでそのパラメーターに使用する値を指定します。
simConfig.Solver = "ode45"; simConfig.StopTime = "20";
構造体のモデル コンフィギュレーション パラメーター値を使用してモデルをシミュレートします。
out = sim(mdl,simConfig);
モデルで ode45
ソルバーを使用してシミュレーション時間 20
秒までシミュレートします。
Simulink.ConfigSet
オブジェクトを使用したシミュレーションの構成
Simulink.ConfigSet
オブジェクトは、モデル コンフィギュレーション パラメーターの値のセットを保存します。Simulink.ConfigSet
オブジェクトを関数 sim
への入力として指定できます。オブジェクトのコンフィギュレーション セットが、シミュレーション用にモデルに適用されます。シミュレーション後に、元のコンフィギュレーション セットがモデルで復元されます。
Simulink.Configset
オブジェクトは、モデル コンフィギュレーション パラメーターの値のみを保存します。単一の入力でシミュレーションのモデル コンフィギュレーション パラメーターの値、ブロック パラメーターの値、および変数の値を指定するには、代わりに Simulink.SimulationInput
オブジェクトを使用します。
モデル IntegrateSine
を開きます。このモデルでは Integrator ブロックを使用して Sine Wave ブロックの出力を積分します。Integrator ブロックからの出力が Outport ブロックに接続されます。
mdl = "IntegrateSine";
open_system(mdl)
関数 getActiveConfigSet
を使用して、現在のモデル コンフィギュレーションの Simulink.ConfigSet
オブジェクトを取得します。
mdlConfig = getActiveConfigSet(mdl);
関数 copy
を使用して、変更する Simulink.ConfigSet
オブジェクトのコピーを作成します。
simConfig = copy(mdlConfig);
ソルバー ode45
および終了時間 20
秒を使用するように Simulink.ConfigSet
オブジェクト simConfig
を変更します。
set_param(simConfig,"Solver","ode45","StopTime","20");
Simulink.Configset
オブジェクト simConfig
のコンフィギュレーション パラメーターを使用してモデルをシミュレートします。
out = sim(mdl,simConfig);
モデルで ode45
ソルバーを使用してシミュレーション時間 20
秒までシミュレートします。
入力引数
simin
— シミュレーション入力とコンフィギュレーション
Simulink.SimulationInput
オブジェクト | Simulink.SimulationInput
オブジェクトの配列
シミュレーション入力とコンフィギュレーション。Simulink.SimulationInput
オブジェクトまたは Simulink.SimulationInput
オブジェクトの配列として指定します。SimulationInput
オブジェクトのプロパティで、シミュレーションで使用するオプションやパラメーターの値を指定します。これには以下が含まれます。
シミュレートするモデル
外部入力データのソースの変数またはファイル
シミュレーションに使用するブロック パラメーターの値
シミュレーションに使用するモデル コンフィギュレーション パラメーターの値
SimulationInput
オブジェクトのプロパティで定義した値はシミュレーション用のモデルに適用され、シミュレーションの終了時に元に戻されます。
mdl
— シミュレートするモデル
string | 文字ベクトル | モデル ハンドル
シミュレートするモデル。モデルの名前を定義する string または文字ベクトルかモデル ハンドル (R2024a 以降)として指定します。
例: simOut = sim("vdp")
は、モデルで現在構成されているパラメーターの値を使用して vdp
という名前のモデルをシミュレートします。
データ型: char
| string
paramstruct
— シミュレートするモデル コンフィギュレーション
構造体
シミュレートするモデル コンフィギュレーション。構造体として指定します。構造体のフィールドはモデル コンフィギュレーション パラメーターの名前になります。各フィールドの値がシミュレーションで使用するパラメーターの値を示します。たとえば、モデルを開始時間 5
から終了時間 10
までシミュレートするには、次のように構造体を作成します。
paramStruct.StartTime = "5"; paramStruct.StopTime = "10";
データ型: struct
configset
— シミュレートするモデル コンフィギュレーション
Simulink.Configset
オブジェクト
シミュレートするモデル コンフィギュレーション。Simulink.ConfigSet
オブジェクトとして指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: simout = sim(simin,UseFastRestart="on")
は、Simulink.SimulationInput
オブジェクトの配列を使用して構成された一連のシミュレーションを高速リスタートを有効にして実行します。
例: simout = sim(mdl,Solver="ode15s",StopTime="30")
は、モデル mdl
のシミュレーションでソルバー ode15s
および終了時間 30 秒を使用するように構成します。
関数 sim
でサポートされる名前と値の引数は、最初の入力として 1 つ以上の Simulink.SimulationInput
オブジェクトを指定するかシミュレートするモデルの名前またはハンドルを指定するかによって異なります。このページで示している引数に加え、関数 sim
への入力を使用してモデル コンフィギュレーション パラメーターの値も指定できます。
最初の入力引数が 1 つ以上の
Simulink.SimulationInput
オブジェクトの場合、シミュレーション用のモデル パラメーターの値を関数setModelParameter
を使用して入力オブジェクトで構成します。最初の入力引数がモデルの名前またはハンドルの場合、任意のモデル コンフィギュレーション パラメーターを名前と値の引数として指定します。
Simulink.SimulationInput
オブジェクトの構文UseFastRestart
— 高速リスタートを有効にするオプション
"off"
(既定値) | "on"
高速リスタートを有効にするオプション。"off"
または "on"
として指定します。高速リスタートは、コンパイルと終了のフェーズを適宜スキップすることで、一連のシミュレーションの実行に要する時間を短縮します。詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。
SimulationInput
オブジェクトの配列を指定することで、関数 sim
の単一の呼び出しを使用して同じモデルのシミュレーションを複数実行する場合は、高速リスタートの使用を検討してくください。
この引数は、スカラーの SimulationInput
オブジェクトを指定する場合は効果はありません。
この引数は、関数 sim
の最初の入力引数として 1 つ以上の Simulink.SimulationInput
オブジェクトを指定する場合にのみサポートされます。
例: sim(simIn,UseFastRestart="on")
データ型: char
| string
StopOnError
— シミュレーション エラーが発生した場合に後続のシミュレーションをスキップするオプション
"off"
(既定値) | "on"
シミュレーション エラーが発生した場合に後続のシミュレーションをスキップするオプション。"off"
または "on"
として指定します。この引数は、Simulink.SimulationInput
オブジェクトの配列を最初の引数として指定することで、関数 sim
の単一の呼び出しを使用して複数のシミュレーションを実行する場合にのみ効果があります。
"off"
— シミュレーション エラーが発生した場合、そのシミュレーション出力でエラーが取得され、後続のシミュレーションはいずれも引き続き実行されます。たとえば、5 つの
SimulationInput
オブジェクトを含むベクトルを指定した場合、2 番目のシミュレーション中にエラーが発生すると、2 番目のシミュレーションの出力でエラーが取得され、3 番目、4 番目、5 番目のシミュレーションは引き続き実行されます。"on"
— シミュレーション エラーが発生した場合、そのシミュレーション出力でエラーが取得され、後続のシミュレーションはいずれも実行されません。たとえば、5 つの
SimulationInput
オブジェクトを含むベクトルを指定した場合、2 番目のシミュレーション中にエラーが発生すると、2 番目のシミュレーションの出力でエラーが取得され、3 番目、4 番目、5 番目のシミュレーションは実行されません。実行されないシミュレーションについては、関数sim
は空のSimulink.SimulationOutput
オブジェクトをそれぞれ返します。
この引数は、スカラーの SimulationInput
オブジェクトを指定して単一のシミュレーションを実行する場合は効果はありません。 (R2024a 以降)
この引数は、関数 sim
の最初の入力引数として 1 つ以上の Simulink.SimulationInput
オブジェクトを指定する場合にのみサポートされます。
例: sim(simIn,StopOnError="on")
ヒント
SimulationInput
オブジェクトの配列を指定して複数のシミュレーションを実行する場合、各シミュレーションでCaptureErrors
パラメーターが常に有効になります。関数sim
を使用して実行する個々のシミュレーションについては、既定ではCaptureErrors
はオフになります。スカラーの
SimulationInput
オブジェクトを指定して実行する単一のシミュレーションについて、シミュレーション出力でエラーを取得するかどうかを制御するには、関数setModelParameter
を使用してシミュレーションに対してCaptureErrors
パラメーターを指定します。 (R2024a 以降)関数
sim
の単一の呼び出しを使用して複数のシミュレーションを実行する場合や、シミュレーション出力でシミュレーション エラーを取得するように個々のシミュレーションを構成する場合は、シミュレーション出力でエラーとシミュレーションに関する情報を確認できます。メッセージを確認するには、
SimulationOutput
オブジェクトのErrorMessage
プロパティを使用します。エラーの詳細を確認するには、
Simulink.SimulationMetadata
オブジェクトのExecutionInfo
プロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報がErrorDiagnostic
フィールドに格納されています。
データ型: char
| string
ShowProgress
— シミュレーションの進行状況を示すオプション
"off"
| "on"
シミュレーションの進行状況を示すオプション。"off"
または "on"
として指定します。
"off"
— 進行状況のメッセージを表示せずにシミュレーションが実行されます。"on"
— シミュレーションの進行に合わせて進行状況の更新情報が表示されます。
このパラメーターの既定値は、最初の入力引数のサイズによって異なります。
最初の入力引数がスカラーの
Simulink.SimulationInput
オブジェクトである場合、既定値は"off"
です。最初の入力引数が
Simulink.SimulationInput
オブジェクトの配列である場合、既定値は"on"
です。
この引数は、関数 sim
の最初の入力引数として 1 つ以上の Simulink.SimulationInput
オブジェクトを指定する場合にのみサポートされます。
例: sim(simIn,ShowProgress="on")
ShowSimulationManager
— シミュレーション マネージャーを開くオプション
"off"
(既定値) | "on"
シミュレーション マネージャーを開くオプション。"off"
または "on"
として指定します。シミュレーション マネージャーは、実行するシミュレーションの進行状況の監視に使用します。Simulink.SimulationInput
オブジェクトの配列を指定して複数のシミュレーションを実行する場合は、シミュレーション マネージャーの使用を検討してください。
この引数は、関数 sim
の最初の入力引数として 1 つ以上の Simulink.SimulationInput
オブジェクトを指定する場合にのみサポートされます。
例: sim(simIn,ShowSimulationManager="on")
FastRestart
— 高速リスタートを有効にするオプション
"off"
(既定値) | "on"
高速リスタートを有効にするオプション。"on"
または "off"
として指定します。
"on"
— シミュレーションで高速リスタートを有効にします。高速リスタートでは、高速リスタートを有効にした後に実行する最初のシミュレーションでモデルをコンパイルし、それ以降はコンパイルと終了をスキップすることで、反復的なシミュレーション ワークフローの時間を短縮します。この名前と値の引数を使用して高速リスタートを有効にした場合、モデルがまだ高速リスタートで初期化されていなければ、シミュレーションを実行する前にモデルがコンパイルされます。高速リスタートでは、シミュレーションの終了後にモデルは初期化されたままになります。
"off"
— シミュレーションで高速リスタートを無効にします。高速リスタートを無効にした場合、シミュレーションを実行するたびに、モデルのコンパイル、シミュレーションの初期化、シミュレーションの実行、シミュレーションの終了がすべて行われます。
既定では、高速リスタートは無効になっており、関数 sim
を使用して実行するシミュレーションで高速リスタートが有効になりません。詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("myModel",FastRestart="on")
ヒント
関数
sim
への最初の入力としてスカラーのSimulationInput
オブジェクトを指定する場合、このパラメーターは関数setModelParameter
を使用してSimulationInput
オブジェクトで指定します。 (R2024a 以降)関数
sim
への最初の入力としてSimulationInput
オブジェクトの配列を指定する場合、名前と値の引数UseFastRestart
を指定してシミュレーションのバッチに対して高速リスタートを有効にします。高速リスタートで初期化されているモデルをシミュレートするときに、この名前と値の引数を
"off"
として指定すると、前のシミュレーションが終了し、モデルがコンパイルされてから現在のシミュレーションが実行されます。Simulink エディターまたは関数
set_param
を使用して高速リスタートを有効にすると、名前と値の引数FastRestart
を指定しなくても、関数sim
を使用して実行するシミュレーションで高速リスタートが使用されます。
データ型: char
| string
CaptureErrors
— シミュレーション エラーが発生した場合にエラーを取得してシミュレーション出力を返すオプション
"off"
(既定値) | "on"
シミュレーション エラーが発生した場合にエラーを取得してシミュレーション出力を返すオプション。"off"
または "on"
として指定します。
動作 | CaptureErrors="off" (既定) | CaptureErrors="on" |
---|---|---|
シミュレーション エラーに対する例外の発行 | シミュレーション エラーに対して例外が発行されます。 例外により、エラーが発生したシミュレーションとそのシミュレーションを呼び出したプロセスの両方が停止します。 | シミュレーション エラーに対して例外が発行されません。 シミュレーション エラーによってシミュレーションが停止します。ただし、シミュレーションを呼び出したのが別の関数またはスクリプトであった場合、その関数またはスクリプトの実行は続行されます。 |
エラー報告 | シミュレーション中に発生したエラーが MATLAB® コマンド ウィンドウで報告されます。 | シミュレーション エラーに関する情報 (メッセージやエラーが発生したシミュレーション フェーズなど) がシミュレーション出力で取得されます。 |
シミュレーション結果 | 例外の発行により、シミュレーションが直ちに停止します。関数 | 関数 |
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("myModel",CaptureErrors="on")
ヒント
このオプションは、ソフトウェアインザループ (SIL) およびプロセッサインザループ (PIL) のシミュレーションではサポートされません。
関数
sim
への入力としてスカラーのSimulationInput
オブジェクトを指定する場合、このパラメーターは関数setModelParameter
を使用してSimulationInput
オブジェクトで指定します。 (R2024a 以降)シミュレーション エラーを取得するように個々のシミュレーションを構成する場合や、
SimulationInput
オブジェクトの配列を指定して複数のシミュレーションを実行する場合は、シミュレーション結果でエラーとシミュレーションに関する情報を確認できます。メッセージを確認するには、
SimulationOutput
オブジェクトのErrorMessage
プロパティを使用します。エラーの詳細を確認するには、
Simulink.SimulationMetadata
オブジェクトのExecutionInfo
プロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報がErrorDiagnostic
フィールドに格納されています。
データ型: char
| string
Debug
— プログラムによるシミュレーション デバッグ セッションを開始するオプション
"off"
(既定値) | "on"
プログラムによるシミュレーション デバッグ セッションを開始するオプション。"off"
または "on"
として指定します。
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("modelName",Debug="on")
データ型: char
| string
RapidAcceleratorUpToDateCheck
— ラピッド アクセラレータ ターゲットのリビルドを無効にするオプション
"on"
(既定値) | "off"
ラピッド アクセラレータ ターゲットのリビルドを無効にするオプション。"on"
または "off"
として指定します。この引数を "on"
として指定すると、ラピッド アクセラレータ ターゲットのリビルドが必要になる変更は無視されます。このオプションを使用する場合、変更するオプションは、ラピッド アクセラレータ ターゲットをリビルドする必要がないものだけにしてください。
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("modelName",RapidAcceleratorUpToDateCheck="off")
ヒント
このオプションを Simulink.SimulationInput
オブジェクトを使用して構成されたシミュレーションに対して指定するには、関数 setModelParameter
を使用します。
simIn = Simulink.SimulationInput("MyModel"); simIn = setModelParameter(simIn,RapidAcceleratorUpToDateCheck="off");
データ型: char
| string
TimeOut
— シミュレーションの最大実行時間
正のスカラー
シミュレーションの最大実行時間。正のスカラーとして指定します。時間を秒単位で指定し、シミュレーションを実行させます。シミュレーションの実行時間が指定した値を超えると、ソフトウェアにより警告が発行され、シミュレーションが停止します。たとえば、TimeOut
を 30
として指定した場合、シミュレーション結果の計算に 30 秒かかると、その時点でソフトウェアによりシミュレーションが停止し、警告が発行されます。
TimeOut
パラメーターで指定するのは、実行するシミュレーションのクロック時間の制限です。シミュレートする最大時間の値を指定するには、[終了時間] パラメーターを使用します。
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("MyModel",TimeOut=60)
は、最大実行時間 60 秒でシミュレーションを実行するように構成します。
ヒント
複数の可変ステップのシミュレーションを逐次実行する場合は、タイムアウトを指定することを検討してください。ソルバーが多数の非常に小さいタイム ステップをとりはじめるようにシミュレーション条件でステップ サイズを制約すると、後続のシミュレーションを実行できるようにシミュレーションをタイムアウトにすることができます。
このオプションを
Simulink.SimulationInput
オブジェクトを使用して構成されたシミュレーションに対して指定するには、関数setModelParameter
を使用します。simIn = Simulink.SimulationInput("MyModel"); simIn = setModelParameter(simIn,TimeOut=60);
Trace
— シミュレーション前にパラメーターの概要を表示するオプション
"siminfo"
シミュレーション前にパラメーターの概要を表示するオプション。"siminfo"
として指定します。
この引数は、関数 sim
の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: sim("modelName",Trace="siminfo")
データ型: char
| string
出力引数
simout
— シミュレーション結果とシミュレーション メタデータ
Simulink.SimulationOutput
オブジェクト | Simulink.SimulationOutput
オブジェクトの配列 | ベクトル
シミュレーション結果とシミュレーション メタデータ。Simulink.SimulationOutput
オブジェクト、Simulink.SimulationOutput
オブジェクトの配列、またはベクトルとして返されます。Simulink.SimulationOutput
オブジェクトには、シミュレーションでログに記録されたすべてのデータとシミュレーションに関するメタデータ (タイミング情報や診断など) が格納されます。
モデルの名前またはハンドルを唯一の入力引数として指定した場合、シミュレートするモデルで [単一のシミュレーション出力] パラメーターが無効になっていれば、関数 sim
からの出力はシミュレーションで発生したメジャー タイム ヒットのベクトルになります。関数 sim
がいずれの構文でも必ず一貫した形式で結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
ヒント
関数
sim
がいずれの構文でも必ず同じ形式で結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。このオプションが有効になっている場合、シミュレーションのすべてのログ データとシミュレーション メタデータ (タイミング情報や診断など) をそれぞれ含む 1 つ以上のSimulink.SimulationOutput
オブジェクトとしてシミュレーション結果が返されます。すべてのシミュレーション データとシミュレーション メタデータを単一のオブジェクトで返すことで、複数のシミュレーションの結果を簡単に解析できます。モデル コンフィギュレーション パラメーターのリストを取得するには、関数
getActiveConfigSet
と関数get_param
を使用します。たとえば、モデルvdp
のコンフィギュレーション パラメーターを表示するには、MATLAB コマンド ウィンドウで次のコマンドを入力します。configSet = getActiveConfigSet("vdp"); configSetNames = get_param(configSet,"ObjectParameters")
関数
get_param
から、StopTime
、SaveTime
、SaveState
、SaveOutput
、SignalLogging
など、すべてのモデル コンフィギュレーション パラメーターのリストが返されます。モデルの階層構造をシミュレートする場合、関数
sim
に入力引数として指定したモデル コンフィギュレーション パラメーターは最上位モデルに適用されます。関数
sim
を使用してシミュレーションを実行すると、エラーが発生するか指定した終了時間に達するまでシミュレーションが実行されます。シミュレーション中にシミュレーション実行の制御やパラメーター値の調整が可能なプログラムによるシミュレーションを実行またはスクリプト化するには、Simulation
オブジェクトを使用します。 (R2024a 以降)詳細については、プログラムによるシミュレーションの実行を参照してください。シミュレーションの操作には、MATLAB コマンド ウィンドウと Simulink エディターの両方を使用できます。関数
set_param
を使用してシミュレーション コマンドを発行します。詳細については、プログラムによるシミュレーションの実行を参照してください。終了時間を無限にしてモデルをシミュレートする場合、MATLAB コマンド ウィンドウから Ctrl + C を押してシミュレーションを停止します。この場合、シミュレーションが停止し、シミュレーション結果は MATLAB ワークスペースに保存されません。
時間、状態、出力のログ記録の構成には [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択します。
モデル全体で信号のログを記録するには、信号ログを使用するか、To Workspace ブロックや Record ブロックなどのログ記録ブロックを使用します。信号ログの詳細については、信号ログを使用した信号データの保存を参照してください。
バージョン履歴
R2006a より前に導入R2024a: シミュレーション中に Simulink エディターにシミュレーション時間を表示
関数 sim
を使用してノーマル モードまたはアクセラレータ モードのシミュレーションを実行するときにモデルを開いておくと、そのモデルの Simulink エディター ウィンドウで、下部にあるステータス バーがシミュレーション中に更新され、現在のシミュレーション時間が表示されます。
R2024a: 関数 sim
でスカラーの SimulationInput
オブジェクトを使用する場合のエラー処理を統一
以前のリリースでは、関数 sim
でスカラーの SimulationInput
オブジェクトに加えて 1 つ以上の名前と値の引数 (名前と値の引数 StopOnError
など) を指定した場合、単一のシミュレーションに対する CaptureErrors
パラメーターが上書きされていました。現在は、次の表にまとめるように、関数 sim
の既定の動作とオプションが統一されています。
SimulationInput の次元 | CaptureErrors | StopOnError | 動作変更 |
---|---|---|---|
スカラー | 既定では このパラメーターを有効にするには、関数 | この名前と値の引数は、単一のシミュレーションを実行する場合は効果はありません。 | 以前のリリースのスクリプトや関数に含まれる一部の関数 |
ベクトル、行列、配列 | 常に "on" 。 | 既定では この名前と値の引数を | 変更なし。 |
R2024a: スカラーの Simulink.SimulationInput
オブジェクトを使用して高速リスタート シミュレーションを実行
関数 sim
とスカラーの SimulationInput
オブジェクトを使用して実行する個々のシミュレーションに対して、Simulink.SimulationInput
オブジェクトを構成して高速リスタートを有効にすることができます。高速リスタートでは、高速リスタートを有効にした最初のシミュレーションで 1 回だけモデルをコンパイルすることで、反復的なシミュレーション ワークフローの時間を短縮します。関数 sim
を使用して個々のシミュレーションに対して高速リスタートを有効にすると、シミュレーションの終了時にモデルは FastRestart
パラメーターが有効なまま、高速リスタートで初期化されます。
FastRestart
パラメーターは、一度に 1 つずつ実行する個々のシミュレーションに対してのみ適用されます。SimulationInput
オブジェクトの配列を使用して一緒に実行する複数のシミュレーションに対して高速リスタートを使用するには、名前と値の引数 UseFastRestart
を使用します。
詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。
R2024a: 多出力構文に対するコード アナライザーの警告
複数の出力引数を返す関数 sim
の呼び出しに対して、コード アナライザーで警告が表示されます。R2009b 以降では、単一のシミュレーション出力の構文が推奨されており、多出力構文は非推奨になっています。
複数の出力引数を返す構文のサポートは、将来のリリースで削除される予定です。
R2019a: 新規のモデルに対して [単一のシミュレーション出力] パラメーターを既定で有効化
新規のモデルに対しては、[単一のシミュレーション出力] パラメーターが既定で有効になります。[単一のシミュレーション出力] パラメーターが有効になっているモデルをシミュレートすると、シミュレーション結果が常に単一の Simulink.SimulationOutput
オブジェクトとして返されます。
R2009b 以降では、関数 sim
の構文として、単一のシミュレーション出力の構文が推奨されています。関数 sim
が常に一貫した形式でシミュレーション結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
R2017a: Simulink.SimulationInput
オブジェクトを使用して個々のシミュレーションまたは複数のシミュレーションを実行
関数 sim
の新しい構文では、1 つ以上の Simulink.SimulationInput
オブジェクトを使用したシミュレーションの構成がサポートされます。SimulationInput
オブジェクトは、シミュレーションで使用する初期状態、初期操作点、外部入力、モデル パラメーター値、ブロック パラメーター値、変数値など、シミュレーションの仕様を表します。SimulationInput
オブジェクトの値は、シミュレーション用にモデルに保存されている値をオーバーライドしますが、モデルを変更したり変更未保存 (ダーティ) にすることはありません。
SimulationInput
オブジェクトは、新しい関数 parsim
と並び、並列シミュレーションのサポートを強化するもので、並列シミュレーションに推奨されます。
R2009b: 単一のシミュレーション出力の構文を使用して複数のシミュレーションの結果を簡単に解析
新しい単出力構文を使用すると、すべてのシミュレーション結果とシミュレーション メタデータを単一の出力引数として返すことができます。単一のシミュレーション出力は、シミュレーションでログ記録されたすべてのデータとシミュレーション メタデータを格納した Simulink.SimulationOutput
オブジェクトです。単一の出力引数を返すことで、並列シミュレーションのサポートが向上し、複数のシミュレーションの結果を簡単に解析できます。
シミュレーション結果を常に単一の出力として返すには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
R2009b: 複数の出力引数を返す構文は非推奨
R2009b 以降、関数 sim
の並列計算に対する互換性が強化され、シミュレーション結果を単一のシミュレーション オブジェクトとして返すオプションなどが導入されています。これを使用すると、データや変数の管理が簡単になります。単一のシミュレーション出力の構文をお勧めします。複数の出力引数を返す構文は推奨されません。
結果を常に単一の出力オブジェクトとして返すようにモデルを構成するには、[単一のシミュレーション出力] パラメーターを使用します。
R2009a 以前では、プログラムによってモデルをシミュレートするには次の構文を使用します。
[T,X,Y1,Y2,Yn] = sim('model',Timespan,Options,UT);
必須の入力引数は model
だけです。他の入力引数を指定しない場合、モデルの現在のコンフィギュレーション パラメーターの値がシミュレーションに使用されます。追加の引数を指定すると、それらの引数でモデルの現在の値がオーバーライドされます。引数を []
として指定すると、その引数についてはモデルの現在の値がシミュレーションに使用されます。
以下の表では、入力引数と出力引数のそれぞれについて、R2009b 以降で推奨される構文を使用するようにコードを更新する方法と共に説明しています。
入力引数の説明と置き換え
入力引数 | R2009a 以前の引数の目的と値 | 置き換え |
---|---|---|
model | シミュレートするモデルの名前。文字ベクトルとして指定します。 | 変更は必要ありません。 R2017a 以降では、シミュレートするモデルを |
Timespan | シミュレーションの開始時間と終了時間。スカラーまたはベクトルとして指定します。
| これらのオプションを構成するには、モデル コンフィギュレーション パラメーターを名前と値の引数として指定します。 R2017a 以降では、これらのオプションを |
Options | 1 つ以上のシミュレーション パラメーター。構造体として指定します。 | モデル コンフィギュレーション パラメーターを名前と値の引数を使用して指定します。 R2017a 以降では、シミュレーション オプションを |
UT | ルートレベルの入力端子用の外部入力データ。 | ルートレベルの入力端子用の入力データは、[入力] パラメーターを使用して指定します。パラメーターを名前と値の引数として指定します。 R2017a 以降では、外部入力を |
出力引数の説明と置き換え
出力引数 | R2009a 以前の引数の目的と値 | 置き換え |
---|---|---|
T | シミュレーション時間。ベクトルとして返されます。 | 時間、状態、出力のデータには tout = simOut.tout; モデル コンフィギュレーション パラメーターを使用して、ログに記録するデータとログ データの変数名を指定します。 |
X | ログに記録された状態。配列または構造体として返されます。 | |
Y1,Y2,...,YN | ログに記録された出力。1 つ以上のベクトルとして返されます。 |
R2009b: SrcWorkspace
引数は非推奨
R2009b 以降では、名前と値の引数 SrcWorkspace
は推奨されません。この引数を指定すると、並列シミュレーションで透明性の違反が発生する可能性があります。ワークスペースで定義された値を使用する代わりに、関数 sim
に入力引数としてシミュレーションの値を指定してください。
R2017a より前では、シミュレーションのパラメーターの値を構造体を使用して指定します。この構造体のフィールドの名前はパラメーターの名前と一致し、その値がパラメーターに使用する値を示します。
R2017a 以降では、モデル パラメーター、ブロック パラメーター、および変数の値を
Simulink.SimulationInput
オブジェクトを使用して構成します。
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)