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 オブジェクトの構成が、シミュレーション用にモデルに適用されます。シミュレーション後に、変更されたモデル設定は元の値に戻ります。
モデル 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");
[12-Aug-2025 19:22:49] Running simulations... [12-Aug-2025 19:22:51] Completed 1 of 6 simulation runs [12-Aug-2025 19:22:51] Completed 2 of 6 simulation runs [12-Aug-2025 19:22:52] Completed 3 of 6 simulation runs [12-Aug-2025 19:22:53] Completed 4 of 6 simulation runs [12-Aug-2025 19:22:53] Completed 5 of 6 simulation runs [12-Aug-2025 19:22:53] 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 オブジェクトを関数 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 秒までシミュレートします。

入力引数
シミュレーション入力とコンフィギュレーション。Simulink.SimulationInput オブジェクトまたは Simulink.SimulationInput オブジェクトの配列として指定します。SimulationInput オブジェクトのプロパティで、シミュレーションで使用するオプションやパラメーターの値を指定します。これには以下が含まれます。
シミュレートするモデル
外部入力データのソースの変数またはファイル
シミュレーションに使用するブロック パラメーターの値
シミュレーションに使用するモデル コンフィギュレーション パラメーターの値
SimulationInput オブジェクトのプロパティで定義した値はシミュレーション用のモデルに適用され、シミュレーションの終了時に元に戻されます。
シミュレートするモデル。モデルの名前を定義する string または文字ベクトルかモデル ハンドル (R2024a 以降)として指定します。
例: simOut = sim("vdp") は、モデルで現在構成されているパラメーターの値を使用して vdp という名前のモデルをシミュレートします。
データ型: char | string
シミュレートするモデル コンフィギュレーション。構造体として指定します。構造体のフィールドはモデル コンフィギュレーション パラメーターの名前になります。各フィールドの値がシミュレーションで使用するパラメーターの値を示します。たとえば、モデルを開始時間 5 から終了時間 10 までシミュレートするには、次のように構造体を作成します。
paramStruct.StartTime = "5"; paramStruct.StopTime = "10";
データ型: struct
シミュレートするモデル コンフィギュレーション。Simulink.ConfigSet オブジェクトとして指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: out = sim(simin,UseFastRestart="on") は、Simulink.SimulationInput オブジェクトの配列を使用して構成された一連のシミュレーションを高速リスタートを有効にして実行します。
例: out = sim(mdl,Solver="ode15s",StopTime="30") は、モデル mdl のシミュレーションでソルバー ode15s および終了時間 30 秒を使用するように構成します。
メモ
関数 sim でサポートされる名前と値の引数は、最初の入力として 1 つ以上の Simulink.SimulationInput オブジェクトを指定するかシミュレートするモデルの名前またはハンドルを指定するかによって異なります。
Simulink.SimulationInput オブジェクトの構文
高速リスタートを有効にするオプション。"off" または "on" として指定します。高速リスタートは、コンパイルと終了のフェーズを適宜スキップすることで、一連のシミュレーションの実行に要する時間を短縮します。詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。
SimulationInput オブジェクトの配列を指定することで、関数 sim の単一の呼び出しを使用して同じモデルのシミュレーションを複数実行する場合は、高速リスタートの使用を検討してくください。詳細については、Script Iterative or Batch Simulations Using Fast Restartを参照してください。
この引数は、スカラーの SimulationInput オブジェクトを指定する場合は効果はありません。
この引数は、関数 sim の最初の入力引数として 1 つ以上の Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。
例: out = sim(simin,UseFastRestart="on");
データ型: char | string
シミュレーション エラーが発生した場合に後続のシミュレーションをスキップするオプション。"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 オブジェクトを指定する場合にのみサポートされます。
例: out = sim(simin,StopOnError="on");
ヒント
SimulationInputオブジェクトの配列を指定して複数のシミュレーションを実行する場合、各シミュレーションでCaptureErrorsパラメーターが常に有効になります。関数simを使用して実行する個々のシミュレーションについては、既定ではCaptureErrorsはオフになります。スカラーの
SimulationInputオブジェクトを指定して実行する単一のシミュレーションについて、シミュレーション出力でエラーを取得するかどうかを制御するには、関数setModelParameterを使用してシミュレーションに対してCaptureErrorsパラメーターを指定します。 (R2024a 以降)関数
simの単一の呼び出しを使用して複数のシミュレーションを実行する場合や、シミュレーション出力でシミュレーション エラーを取得するように個々のシミュレーションを構成する場合は、シミュレーション出力でエラーとシミュレーションに関する情報を確認できます。メッセージを確認するには、
SimulationOutputオブジェクトのErrorMessageプロパティを使用します。エラーの詳細を確認するには、
Simulink.SimulationMetadataオブジェクトのExecutionInfoプロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報がErrorDiagnosticフィールドに格納されています。
データ型: char | string
シミュレーションの進行状況を示すオプション。"off" または "on" として指定します。
"off"— 進行状況のメッセージを表示せずにシミュレーションが実行されます。"on"— シミュレーションの進行に合わせて進行状況の更新情報が表示されます。
このパラメーターの既定値は、最初の入力引数のサイズによって異なります。
最初の入力引数がスカラーの
Simulink.SimulationInputオブジェクトである場合、既定値は"off"です。最初の入力引数が
Simulink.SimulationInputオブジェクトの配列である場合、既定値は"on"です。
この引数は、関数 sim の最初の入力引数として 1 つ以上の Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。
例: out = sim(simin,ShowProgress="on");
シミュレーション マネージャーを開くオプション。"off" または "on" として指定します。シミュレーション マネージャーは、実行するシミュレーションの進行状況の監視に使用します。Simulink.SimulationInput オブジェクトの配列を指定して複数のシミュレーションを実行する場合は、シミュレーション マネージャーの使用を検討してください。
この引数は、関数 sim の最初の入力引数として 1 つ以上の Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。
例: out = sim(simin,ShowSimulationManager="on");
モデルの構文
モデル コンフィギュレーション パラメーター。コンフィギュレーション パラメーターのプログラム上の名前とコンフィギュレーション パラメーターの値で構成される名前と値の引数として指定します。たとえば、[終了時間] パラメーターの値を指定するには、プログラム上のパラメーター名 StopTime を名前と値の引数の名前として使用し、シミュレーション終了時間を値として指定します。以下のコマンドは、MyModel という名前のモデルのシミュレーションをシミュレーション終了時間の 100 秒まで実行します。
mdl = "MyModel"; out = sim(mdl,StopTime="100");
名前と値の引数を使用すると、sim 関数を使用して実行するシミュレーションで、どのモデル コンフィギュレーション パラメーターの値も指定できます。指定するコンフィギュレーション パラメーターの値は、そのシミュレーションで適用され、シミュレーションが終了すると元に戻ります。モデルの階層構造をシミュレートする場合、指定するコンフィギュレーション パラメーターの値は最上位モデルに適用されます。
sim 関数に対する名前と値の引数を使用したモデル コンフィギュレーション パラメーターの値の指定は、シミュレートするモデルの名前またはハンドルを最初の入力引数として指定する場合にのみサポートされます。
例: out = sim("MyModel",SaveOutput="on");
ヒント
Simulink.SimulationInputオブジェクトを使用して構成されたシミュレーションに対してコンフィギュレーション パラメーターの値を指定するには、setModelParameter関数を使用します。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,StopTime="100");
モデル コンフィギュレーション パラメーターのリストを取得するには、関数
getActiveConfigSetと関数get_paramを使用します。たとえば、vdpという名前のモデルのコンフィギュレーション パラメーターを表示するには、MATLAB® コマンド ウィンドウで次のコマンドを入力します。configSet = getActiveConfigSet("vdp"); configSetNames = get_param(configSet,"ObjectParameters")
関数
get_paramから、StopTime、SaveTime、SaveState、SaveOutput、SignalLoggingなど、すべてのモデル コンフィギュレーション パラメーターのリストが返されます。
高速リスタートを有効にするオプション。"on" または "off" として指定します。
"on"— シミュレーションで高速リスタートを有効にします。高速リスタートでは、高速リスタートを有効にした後に実行する最初のシミュレーションでモデルをコンパイルし、それ以降はコンパイルと終了をスキップすることで、反復的なシミュレーション ワークフローの時間を短縮します。既定では、高速リスタートは無効になっており、関数simを使用して実行するシミュレーションで高速リスタートが有効になりません。詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。この名前と値の引数を使用して高速リスタートを有効にした場合、モデルがまだ高速リスタートで初期化されていなければ、シミュレーションを実行する前にモデルがコンパイルされます。高速リスタートでは、シミュレーションの終了後にモデルは初期化されたままになります。詳細については、Script Iterative or Batch Simulations Using Fast Restartを参照してください。
"off"— シミュレーションで高速リスタートを無効にします。高速リスタートを無効にした場合、シミュレーションを実行するたびに、モデルのコンパイル、シミュレーションの初期化、シミュレーションの実行、シミュレーションの終了がすべて行われます。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",FastRestart="on");
ヒント
関数
simへの最初の入力としてスカラーのSimulationInputオブジェクトを指定する場合、このパラメーターは関数setModelParameterを使用してSimulationInputオブジェクトで指定します。 (R2024a 以降)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,FastRestart="on");
関数
simへの最初の入力としてSimulationInputオブジェクトの配列を指定する場合、名前と値の引数UseFastRestartを指定してシミュレーションのバッチに対して高速リスタートを有効にします。高速リスタートで初期化されているモデルをシミュレートするときに、この名前と値の引数を
"off"として指定すると、前のシミュレーションが終了し、モデルがコンパイルされてから現在のシミュレーションが実行されます。Simulink エディターまたは関数
set_paramを使用して高速リスタートを有効にすると、名前と値の引数FastRestartを指定しなくても、関数simを使用して実行するシミュレーションで高速リスタートが使用されます。
データ型: char | string
シミュレーション モード。"normal"、"accelerator"、または "rapid-accelerator" として指定します。
| 値 | 説明 |
|---|---|
"normal" | ノーマル モードを使用してシミュレーションを実行します。 ノーマル モードのシミュレーションでは、完全なモデルの表現が使用され、シミュレーション中のモデル操作のサポートが最大になります。 ノーマル モードは、シミュレーションの合間にモデルの構造の変更が必要なワークフローに使用します。最良の結果が得られるように、シミュレーションのデバッグにはノーマル モードを使用します。 |
"accelerator" | アクセラレータ モードを使用してシミュレーションを実行します。 アクセラレータ モードのシミュレーションでは、シミュレーションで使用する "シミュレーション ターゲット" と呼ばれる最適化されたモデルの表現が生成されます。シミュレーションのパフォーマンスを改善する最適化によって、シミュレーション中のモデル操作機能が低下する可能性があります。アクセラレータ モードのシミュレーションの合間にモデルを変更すると、シミュレーション ターゲットの再生成が必要になることがあります。 アクセラレータ モードは、シミュレーションの合間にモデルの構造を変更しないワークフローで、シミュレーションの速度を上げるために使用します。 |
"rapid-accelerator" | ラピッド アクセラレータ モードを使用してシミュレーションを実行します。 ラピッド アクセラレータ モードのシミュレーションでは、シミュレーションに使用するスタンドアロン実行可能ファイルが生成されます。スタンドアロン実行可能ファイルでは、シミュレーション中のモデル操作のサポートは最小限になります。ラピッド アクセラレータ シミュレーションの合間にモデルを変更すると、スタンドアロン実行可能ファイルのリビルドが必要になることがあります。 ラピッド アクセラレータ モードは、シミュレーションの合間に行うモデルの変更が変数やパラメーターの値の調整 "のみ" である場合に、シミュレーションの実行を最も速くするために使用します。一部のパラメーターの値を調整すると、スタンドアロン実行可能ファイルのリビルドが必要になることがあります。 |
詳細については、シミュレーション モードの選択および高速化されたモデルでのコードの再生成を参照してください。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",SimulationMode="accelerator");
ヒント
このオプションを
Simulink.SimulationInputオブジェクトを使用して構成されたシミュレーションに対して指定するには、関数setModelParameterを使用します。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,SimulationMode="accelerator");
可視化ブロックは、シミュレーションを Simulink エディターなどの UI から実行する場合はシミュレーション中に更新されますが、ラピッド アクセラレータ シミュレーションをプログラムで実行する場合はシミュレーション中に更新されません。
スタンドアロン実行可能ファイルのリビルドを回避するために、
RapidAcceleratorUpToDateCheckパラメーターの値を"off"として指定してラピッド アクセラレータの最新チェックを無効にできます。最新チェックを無効にすると、実行可能ファイルのリビルドが必要になる変更が無視されます。ラピッド アクセラレータ モードを使用してシミュレートするために、
"rapid-accelerator"の部分一致である"rapid"を指定できます。MATLAB の名前と値の引数の詳細については、名前と値の引数の検証を参照してください。
データ型: char | string
シミュレーション エラーが発生した場合にエラーを取得してシミュレーション出力を返すオプション。"off" または "on" として指定します。
| 動作 | CaptureErrors="off" (既定) | CaptureErrors="on" |
|---|---|---|
| シミュレーション エラーに対する例外の発行 | シミュレーション エラーに対して例外が発行されます。 例外により、エラーが発生したシミュレーションとそのシミュレーションを呼び出したプロセスの両方が停止します。 | シミュレーション エラーに対して例外が発行されません。 シミュレーション エラーによってシミュレーションが停止します。ただし、シミュレーションを呼び出したのが別の関数またはスクリプトであった場合、その関数またはスクリプトの実行は続行されます。 |
| エラー報告 | シミュレーション中に発生したエラーが MATLAB コマンド ウィンドウで報告されます。 | シミュレーション エラーに関する情報 (メッセージやエラーが発生したシミュレーション フェーズなど) がシミュレーション出力で取得されます。 |
| シミュレーション結果 | 例外の発行により、シミュレーションが直ちに停止します。関数 | 関数 |
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",CaptureErrors="on");
ヒント
このオプションは、ソフトウェアインザループ (SIL) およびプロセッサインザループ (PIL) のシミュレーションではサポートされません。
関数
simへの入力としてスカラーのSimulationInputオブジェクトを指定する場合、このパラメーターは関数setModelParameterを使用してSimulationInputオブジェクトで指定します。 (R2024a 以降)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,CaptureErrors="on");
シミュレーション エラーを取得するように個々のシミュレーションを構成する場合や、
SimulationInputオブジェクトの配列を指定して複数のシミュレーションを実行する場合は、シミュレーション結果でエラーとシミュレーションに関する情報を確認できます。メッセージを確認するには、
SimulationOutputオブジェクトのErrorMessageプロパティを使用します。エラーの詳細を確認するには、
Simulink.SimulationMetadataオブジェクトのExecutionInfoプロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報がErrorDiagnosticフィールドに格納されています。
データ型: char | string
プログラムによるシミュレーション デバッグ セッションを開始するオプション。"off" または "on" として指定します。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",Debug="on");
データ型: char | string
ラピッド アクセラレータ ターゲットのリビルドを無効にするオプション。"on" または "off" として指定します。この引数を "on" として指定すると、ラピッド アクセラレータ ターゲットのリビルドが必要になる変更は無視されます。このオプションを使用する場合、変更するオプションは、ラピッド アクセラレータ ターゲットをリビルドする必要がないものだけにしてください。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",RapidAcceleratorUpToDateCheck="off");
ヒント
このオプションを Simulink.SimulationInput オブジェクトを使用して構成されたシミュレーションに対して指定するには、関数 setModelParameter を使用します。
simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,RapidAcceleratorUpToDateCheck="off");
データ型: char | string
シミュレーションの最大実行時間。正のスカラーとして指定します。時間を秒単位で指定し、シミュレーションを実行させます。シミュレーションの実行時間が指定した値を超えると、ソフトウェアにより警告が発行され、シミュレーションが停止します。たとえば、TimeOut を 30 として指定した場合、シミュレーション結果の計算に 30 秒かかると、その時点でソフトウェアによりシミュレーションが停止し、警告が発行されます。
TimeOut パラメーターで指定するのは、実行するシミュレーションのクロック時間の制限です。シミュレートする最大時間の値を指定するには、[終了時間] パラメーターを使用します。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",TimeOut=60); は、最大実行時間 60 秒でシミュレーションを実行するように構成します。
ヒント
複数の可変ステップのシミュレーションを逐次実行する場合は、タイムアウトを指定することを検討してください。ソルバーが多数の非常に小さいタイム ステップをとりはじめるようにシミュレーション条件でステップ サイズを制約すると、後続のシミュレーションを実行できるようにシミュレーションをタイムアウトにすることができます。
このオプションを
Simulink.SimulationInputオブジェクトを使用して構成されたシミュレーションに対して指定するには、関数setModelParameterを使用します。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,TimeOut=60);
シミュレーション前にパラメーターの概要を表示するオプション。"siminfo" として指定します。
この引数は、関数 sim の最初の入力引数としてモデルの名前またはハンドルを指定する場合にのみサポートされます。
例: out = sim("MyModel",Trace="siminfo");
データ型: char | string
出力引数
シミュレーション結果とシミュレーション メタデータ。Simulink.SimulationOutput オブジェクト、Simulink.SimulationOutput オブジェクトの配列、またはベクトルとして返されます。Simulink.SimulationOutput オブジェクトには、シミュレーションでログに記録されたすべてのデータとシミュレーションに関するメタデータ (タイミング情報や診断など) が格納されます。
モデルの名前またはハンドルを唯一の入力引数として指定した場合、シミュレートするモデルで [単一のシミュレーション出力] パラメーターが無効になっていれば、関数 sim からの出力はシミュレーションで発生したメジャー タイム ヒットのベクトルになります。関数 sim がいずれの構文でも必ず一貫した形式で結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
ヒント
関数
simがいずれの構文でも必ず同じ形式で結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。このオプションが有効になっている場合、シミュレーションのすべてのログ データとシミュレーション メタデータ (タイミング情報や診断など) をそれぞれ含む 1 つ以上のSimulink.SimulationOutputオブジェクトとしてシミュレーション結果が返されます。すべてのシミュレーション データとシミュレーション メタデータを単一のオブジェクトで返すことで、複数のシミュレーションの結果を簡単に解析できます。関数
simを使用してシミュレーションを実行すると、エラーが発生するか指定した終了時間に達するまでシミュレーションが実行されます。シミュレーション中にシミュレーション実行の制御やパラメーター値の調整が可能なプログラムによるシミュレーションを実行またはスクリプト化するには、Simulationオブジェクトを使用します。 (R2024a 以降)詳細については、プログラムによるシミュレーションの実行を参照してください。シミュレーションの操作には、MATLAB コマンド ウィンドウと Simulink エディターの両方を使用できます。関数
set_paramを使用してシミュレーション コマンドを発行します。詳細については、プログラムによるシミュレーションの実行を参照してください。終了時間を無限にしてモデルをシミュレートする場合、MATLAB コマンド ウィンドウから Ctrl + C を押してシミュレーションを停止します。この場合、シミュレーションが停止し、シミュレーション結果は MATLAB ワークスペースに保存されません。
時間、状態、出力のログ記録の構成には [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択します。
モデル全体で信号のログを記録するには、信号ログを使用するか、To Workspace ブロックや Record ブロックなどのログ記録ブロックを使用します。信号ログの詳細については、信号ログを使用した信号データの保存を参照してください。
バージョン履歴
R2006a より前に導入関数 sim を使用してノーマル モードまたはアクセラレータ モードのシミュレーションを実行するときにモデルを開いておくと、そのモデルの Simulink エディター ウィンドウで、下部にあるステータス バーがシミュレーション中に更新され、現在のシミュレーション時間が表示されます。
以前のリリースでは、関数 sim でスカラーの SimulationInput オブジェクトに加えて 1 つ以上の名前と値の引数 (名前と値の引数 StopOnError など) を指定した場合、単一のシミュレーションに対する CaptureErrors パラメーターが上書きされていました。現在は、次の表にまとめるように、関数 sim の既定の動作とオプションが統一されています。
SimulationInput の次元 | CaptureErrors | StopOnError | 動作変更 |
|---|---|---|---|
| スカラー | 既定では このパラメーターを有効にするには、関数 | この名前と値の引数は、単一のシミュレーションを実行する場合は効果はありません。 | 以前のリリースのスクリプトや関数に含まれる一部の関数 |
| ベクトル、行列、配列 | 常に "on"。 | 既定では この名前と値の引数を | 変更なし。 |
関数 sim とスカラーの SimulationInput オブジェクトを使用して実行する個々のシミュレーションに対して、Simulink.SimulationInput オブジェクトを構成して高速リスタートを有効にすることができます。高速リスタートでは、高速リスタートを有効にした最初のシミュレーションで 1 回だけモデルをコンパイルすることで、反復的なシミュレーション ワークフローの時間を短縮します。関数 sim を使用して個々のシミュレーションに対して高速リスタートを有効にすると、シミュレーションの終了時にモデルは FastRestart パラメーターが有効なまま、高速リスタートで初期化されます。
FastRestart パラメーターは、一度に 1 つずつ実行する個々のシミュレーションに対してのみ適用されます。SimulationInput オブジェクトの配列を使用して一緒に実行する複数のシミュレーションに対して高速リスタートを使用するには、名前と値の引数 UseFastRestart を使用します。
詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。
複数の出力引数を返す関数 sim の呼び出しに対して、コード アナライザーで警告が表示されます。R2009b 以降では、単一のシミュレーション出力の構文が推奨されており、多出力構文は非推奨になっています。
複数の出力引数を返す構文のサポートは、将来のリリースで削除される予定です。
新規のモデルに対しては、[単一のシミュレーション出力] パラメーターが既定で有効になります。[単一のシミュレーション出力] パラメーターが有効になっているモデルをシミュレートすると、シミュレーション結果が常に単一の Simulink.SimulationOutput オブジェクトとして返されます。
R2009b 以降では、関数 sim の構文として、単一のシミュレーション出力の構文が推奨されています。関数 sim が常に一貫した形式でシミュレーション結果を返すようにするには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
関数 sim の新しい構文では、1 つ以上の Simulink.SimulationInput オブジェクトを使用したシミュレーションの構成がサポートされます。SimulationInput オブジェクトは、シミュレーションで使用する初期状態、初期操作点、外部入力、モデル パラメーター値、ブロック パラメーター値、変数値など、シミュレーションの仕様を表します。SimulationInput オブジェクトの値は、シミュレーション用にモデルに保存されている値をオーバーライドしますが、モデルを変更したり変更未保存 (ダーティ) にすることはありません。
SimulationInput オブジェクトは、新しい関数 parsim と並び、並列シミュレーションのサポートを強化するもので、並列シミュレーションに推奨されます。
新しい単出力構文を使用すると、すべてのシミュレーション結果とシミュレーション メタデータを単一の出力引数として返すことができます。単一のシミュレーション出力は、シミュレーションでログ記録されたすべてのデータとシミュレーション メタデータを格納した Simulink.SimulationOutput オブジェクトです。単一の出力引数を返すことで、並列シミュレーションのサポートが向上し、複数のシミュレーションの結果を簡単に解析できます。
シミュレーション結果を常に単一の出力として返すには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。
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 は推奨されません。この引数を指定すると、並列シミュレーションで透明性の違反が発生する可能性があります。ワークスペースで定義された値を使用する代わりに、関数 sim に入力引数としてシミュレーションの値を指定してください。
R2017a より前では、シミュレーションのパラメーターの値を構造体を使用して指定します。この構造体のフィールドの名前はパラメーターの名前と一致し、その値がパラメーターに使用する値を示します。
R2017a 以降では、モデル パラメーター、ブロック パラメーター、および変数の値を
Simulink.SimulationInputオブジェクトを使用して構成します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)