Main Content

sim

Simulink モデルをシミュレート

説明

Simulink.SimulationInput オブジェクトの構文

simOut = sim(simIn) は、1 つ以上の Simulink.SimulationInput オブジェクトで定義されたプロパティに従って Simulink® モデルの 1 つ以上のシミュレーションを実行します。

  • simIn がスカラーの Simulink.SimulationInput オブジェクトの場合、simOut はスカラーの Simulink.SimulationOutput オブジェクトになります。

  • simInSimulink.SimulationInput オブジェクトの配列の場合、simOutSimulink.SimulationOutput オブジェクトの配列になります。

SimulationInput オブジェクトを使用してシミュレーションのオプションや入力を構成できます。これには以下が含まれます。

  • シミュレートするモデル

  • 外部入力データのソースの変数またはファイル

  • シミュレーションに使用するブロック パラメーターの値

  • シミュレーションに使用するモデル コンフィギュレーション パラメーターの値

SimulationInput オブジェクトのプロパティでモデルまたはブロックのパラメーターの値を変更すると、その値がシミュレーション中に変更され、シミュレーションの終了時に元に戻されます。

SimulationInput オブジェクトを使用してプログラミングによるシミュレーションを構成すると、使用する関数を sim から parsimbatchsim などの他の関数に簡単に切り替えることができます。

simOut = sim(simIn,Name,Value) は、1 つ以上の名前と値の引数を使用して指定された追加のオプションを使用して、Simulink.SimulationInput オブジェクト simIn で定義されたプロパティに従ってモデルをシミュレートします。

Simulink.SimulationInput の構文でサポートされる名前と値の引数のリストについては、Simulink.SimulationInput オブジェクトの構文を参照してください。

モデル名の構文

simOut = sim(modelName) は、モデルの現在のコンフィギュレーション パラメーターとブロック パラメーターの値を使用して、modelName で指定されたモデルをシミュレートします。

  • [単一のシミュレーション出力] パラメーターがモデルで有効になっている場合、simOutSimulink.SimulationOutput オブジェクトになります。

  • [単一のシミュレーション出力] パラメーターがモデルで有効になっていない場合、simOut はシミュレーション時間を格納したベクトルになります。詳細については、複数の出力引数を返すことは非推奨を参照してください。

simOut = sim(modelName,Name,Value) は、1 つ以上の名前と値の引数を使用して指定されたオプションを使用して、modelName で指定されたモデルをシミュレートします。たとえば、パラメーターの名前と値を名前と値の引数として指定することで、シミュレーション用のモデル コンフィギュレーション パラメーターの値を変更できます。

関数 sim に入力を提供してモデル コンフィギュレーション パラメーターを変更すると、その変更がシミュレーション中に適用され、シミュレーションの終了時に元に戻されます。

モデル名の構文でサポートされる名前と値の引数のリストについては、モデル名の構文を参照してください。

simOut = sim(modelName,paramStruct) は、構造体 paramStruct で指定されたモデル コンフィギュレーション パラメーターの値を使用して、modelName で指定されたモデルをシミュレートします。

simOut = sim(modelName,configSet) は、コンフィギュレーション セット configSet のモデル コンフィギュレーション パラメーターの値を使用して、modelName で指定されたモデルをシミュレートします。

すべて折りたたむ

SimulationInput オブジェクトを使用してモデル内のブロックのパラメーターの値を変更します。

モデルを開きます。

openExample("simulink_general/sldemo_househeatExample")

このモデルの SimulationInput オブジェクトを作成します。

mdl = "sldemo_househeat";
simIn = Simulink.SimulationInput(mdl);

Set Point ブロックの Value パラメーターを変更して、サーモスタットの指定値を 300 に変更します。

simIn = setBlockParameter(simIn,"sldemo_househeat/Set Point",...
	"Value","300");

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

out = sim(simIn);

モデルがまだ読み込まれていない場合でも、あるいは読み込まれていて未保存の変更がある場合でも、モデル vdp を現在の状態でシミュレートします。

simOut = sim("vdp");

構造体で指定したモデル コンフィギュレーション パラメーターの値を使用してモデル vdp をシミュレートします。

構造体 paramStruct を作成します。変数名 xoutNew を使用して状態をログに記録するようにモデルを構成します。

paramStruct.SaveState      = 'on';
paramStruct.StateSaveName  = 'xoutNew';

構造体にフィールドをさらに追加し、変数名 youtNew を使用して出力をログに記録するようにモデルを構成します。

paramStruct.SaveOutput     = 'on';
paramStruct.OutputSaveName = 'youtNew';

構造体で指定したオプションを使用してモデルをシミュレートします。

simOut = sim('vdp',paramStruct)
simOut = 
  Simulink.SimulationOutput:

                xoutNew: [64x2 double] 
                youtNew: [64x2 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

モデル vdp を開き、アクティブなコンフィギュレーションの Simulink.ConfigSet オブジェクトを取得します。

mdl = "vdp";
open_system(mdl)
cs = getActiveConfigSet(mdl);

Simulink.ConfigSet オブジェクトのコピーを作成します。次に、関数 set_param を使用してコンフィギュレーション セットのパラメーターの値を変更します。ConfigSet オブジェクトのパラメーターを次のように構成します。

  • 絶対許容誤差として 1e-5 を使用

  • 変数名 xoutNew を使用して状態をログに記録

  • 変数名 youtNew を使用して出力をログに記録

csNew = copy(cs);
set_param(csNew,"AbsTol","1e-5",...
         "SaveState","on","StateSaveName","xoutNew",...
         "SaveOutput","on","OutputSaveName","youtNew")

変更した Simulink.ConfigSet オブジェクトを使用してモデルをシミュレートします。

simOut = sim(mdl,csNew)
simOut = 
  Simulink.SimulationOutput:

                xoutNew: [65x2 double] 
                youtNew: [65x2 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

入力引数

すべて折りたたむ

シミュレーションの構成。Simulink.SimulationInput オブジェクトとして指定します。SimulationInput オブジェクトのプロパティで、シミュレーションで使用するオプションやパラメーターの値を指定します。これには以下が含まれます。

  • シミュレートするモデル

  • 外部入力データのソースの変数またはファイル

  • シミュレーションに使用するブロック パラメーターの値

  • シミュレーションに使用するモデル コンフィギュレーション パラメーターの値

SimulationInput オブジェクトのプロパティで定義した値はシミュレーション用のモデルに適用され、シミュレーションの終了時に元に戻されます。

シミュレートするモデル。string または文字ベクトルとして指定します。

例: 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 を引用符で囲みます。

例: simOut = sim(simIn,"UseFastRestart","on") は、Simulink.SimulationInput オブジェクトの配列を使用して構成された一連のシミュレーションを高速リスタートを有効にして実行します。

例: simOut = sim(modelName,"Solver","ode15s","StopTime","30") は、modelName で指定されたモデルのシミュレーションを ode15s ソルバーを使用して終了時間 30 まで実行するように構成します。

関数 sim でサポートされる名前と値の引数は、最初の入力として Simulink.SimulationInput オブジェクトを指定するかシミュレートするモデルの名前を指定するかによって異なります。このページで示している引数に加え、関数 sim への入力を使用してモデル コンフィギュレーション パラメーターの値も指定できます。

  • 最初の入力引数が Simulink.SimulationInput オブジェクトの場合、シミュレーション用のモデル パラメーターの値を関数 setModelParameter を使用して入力オブジェクトで構成します。

  • 最初の入力引数がモデル名の場合、任意のモデル コンフィギュレーション パラメーターを名前と値の引数として指定します。

Simulink.SimulationInput オブジェクトの構文

すべて折りたたむ

高速リスタートを有効にするオプション。'off' または 'on' として指定します。高速リスタートは、コンパイルと終了のフェーズを適宜スキップすることで、一連のシミュレーションの実行に要する時間を短縮します。同じモデルのシミュレーションを複数実行する場合は、高速リスタートの使用を検討してください。

詳細については、高速リスタートによる反復的なシミュレーションの改善を参照してください。

この引数は、関数 sim の最初の引数として Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。

例: sim(simIn,"UseFastRestart","on")

データ型: char | string

シミュレーションを開始したプロセスをエラー発生時に停止するオプション。'off' または 'on' として指定します。

  • 'off' — シミュレーションでエラーが発生したときに、そのシミュレーションが停止し、シミュレーションを開始したプロセスは続行されます。たとえば、Simulink.SimulationInput オブジェクトの配列を使用して一連のシミュレーションを実行する場合、最初のシミュレーションでエラーが発生すると、そのシミュレーションが停止し、後続のシミュレーションの実行は続行されます。

  • 'on' — シミュレーションでエラーが発生したときに、そのシミュレーションとシミュレーションを開始したプロセスの両方が停止します。たとえば、Simulink.SimulationInput オブジェクトの配列を使用して一連のシミュレーションを実行する場合、最初のシミュレーションでエラーが発生すると、そのシミュレーションが停止し、後続のシミュレーションも実行されません。

この引数は、関数 sim の最初の引数として Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。

例: sim(simIn,"StopOnError","on")

ヒント

  • 関数 sim の最初の入力引数としてモデルの名前を指定する場合、この動作を構成するには名前と値の引数 CaptureErrors を使用します。

  • シミュレーションを開始したプロセスをエラー発生時に停止しない場合、Simulink.SimulationOutput オブジェクトと Simulink.SimulationMetadata オブジェクトでエラー メッセージの情報が取得されます。

    • メッセージを確認するには、SimulationOutput オブジェクトの ErrorMessage プロパティを使用します。

    • エラーの詳細を確認するには、Simulink.SimulationMetadata オブジェクトの ExecutionInfo プロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報が ErrorDiagnostic フィールドに格納されています。

データ型: char | string

シミュレーションの進行状況を示すオプション。'off' または 'on' として指定します。

  • 'off' — 進行状況のメッセージを表示せずにシミュレーションが実行されます。

  • 'on' — シミュレーションの進行に合わせて進行状況の更新情報が表示されます。

    このオプションは、Simulink.SimulationInput オブジェクトの配列を使用して複数のシミュレーションを実行する場合に便利です。

    この引数は、関数 sim の最初の引数として Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。

例: sim(simIn,"ShowProgress","on")

シミュレーション マネージャーを開くオプション。'off' または 'on' として指定します。シミュレーション マネージャーは、実行するシミュレーションの進行状況の監視に使用します。Simulink.SimulationInput オブジェクトの配列を使用して複数のシミュレーションを実行する場合は、シミュレーション マネージャーの使用を検討してください。

この引数は、関数 sim の最初の引数として Simulink.SimulationInput オブジェクトを指定する場合にのみサポートされます。

例: sim(simIn,"ShowSimulationManager","on")

モデル名の構文

すべて折りたたむ

シミュレーションを開始したプロセスをエラー発生時に続行するオプション。'off' または 'on' として指定します。関数 sim を使用してシミュレーションを実行する際、最初の入力としてモデルの名前を指定すると、既定では次のようになります。

  • MATLAB® コマンド ウィンドウでエラーが報告されます。

  • エラーが発生すると、シミュレーションとそのシミュレーションを呼び出したプロセスの両方が停止します。

  • Simulink.SimulationOutput オブジェクトまたは Simulink.SimulationMetadata オブジェクトでエラー メッセージは取得されません。

CaptureErrors'on' として指定すると、シミュレーション出力でエラーの報告のみが行われます。エラーが発生したシミュレーションの実行は停止しますが、シミュレーションを呼び出したのが別のプロセスであった場合、そのプロセスは続行されます。たとえば、複数のシミュレーションをループで実行する場合、CaptureErrors'on' として指定すると、エラーが発生したシミュレーションの後続のシミュレーションは続行されます。

この引数は、関数 sim の最初の引数としてシミュレートするモデルの名前を指定する場合にのみサポートされます。

例: sim("myModel","CaptureErrors","on")

ヒント

  • このオプションは、ソフトウェアインザループ (SIL) およびプロセッサインザループ (PIL) のシミュレーションではサポートされません。

  • 関数 sim への入力として 1 つ以上の Simulink.SimulationInput オブジェクトを指定する場合、この動作を構成するには名前と値の引数 StopOnError を使用します。

  • CaptureErrors'on' として指定した場合、Simulink.SimulationOutput オブジェクトと Simulink.SimulationMetadata オブジェクトでエラー メッセージの情報が取得されます。

    • メッセージを確認するには、SimulationOutput オブジェクトの ErrorMessage プロパティを使用します。

    • エラーの詳細を確認するには、Simulink.SimulationMetadata オブジェクトの ExecutionInfo プロパティを使用します。エラーが発生したシミュレーション フェーズなど、エラーに関する情報が ErrorDiagnostic フィールドに格納されています。

データ型: char | string

シミュレーションをデバッグ モードで開始するオプション。'off' または 'on' として指定します。

この引数は、関数 sim の最初の引数としてシミュレートするモデルの名前を指定する場合にのみサポートされます。

例: sim("modelName","Debug","on")

データ型: char | string

ラピッド アクセラレータ ターゲットのリビルドを無効にするオプション。'on' または 'off' として指定します。この引数を 'on' として指定すると、ラピッド アクセラレータ ターゲットのリビルドが必要になる変更は無視されます。このオプションを使用する場合、変更するオプションは、ラピッド アクセラレータ ターゲットをリビルドする必要がないものだけにしてください。

この引数は、関数 sim の最初の引数としてシミュレートするモデルの名前を指定する場合にのみサポートされます。

例: sim("modelName","RapidAcceleratorUpToDateCheck","off")

ヒント

このオプションを Simulink.SimulationInput オブジェクトを使用して構成されたシミュレーションに対して指定するには、関数 setModelParameter を使用します。

simIn = Simulink.SimulationInput("myModel");
simIn = setModelParameter(simIn,"RapidAcceleratorUpToDateCheck","off");

データ型: char | string

シミュレーションの最大実行時間。正のスカラーとして指定します。時間を秒単位で指定し、シミュレーションを実行させます。シミュレーションの実行時間が指定した値を超えると、ソフトウェアにより警告が発行され、シミュレーションが停止します。たとえば、TimeOut30 として指定した場合、シミュレーション結果の計算に 30 秒かかると、その時点でソフトウェアによりシミュレーションが停止し、警告が発行されます。

TimeOut パラメーターで指定するのは、実行するシミュレーションのクロック時間の制限です。シミュレートする最大時間の値を指定するには、[終了時間] パラメーターを使用します。

この引数は、関数 sim の最初の引数としてシミュレートするモデルの名前を指定する場合にのみサポートされます。

例: sim("modelName","TimeOut",60) は、シミュレーションを最大 60 秒間実行するように構成します。

ヒント

このオプションを Simulink.SimulationInput オブジェクトを使用して構成されたシミュレーションに対して指定するには、関数 setModelParameter を使用します。

simIn = Simulink.SimulationInput("modelName");
simIn = setModelParameter(simIn,"TimeOut",60);

シミュレーション前にパラメーターの概要を表示するオプション。'siminfo' として指定します。

この引数は、関数 sim の最初の引数としてシミュレートするモデルの名前を指定する場合にのみサポートされます。

例: sim("modelName","Trace","siminfo")

データ型: char | string

出力引数

すべて折りたたむ

シミュレーション出力。Simulink.SimulationOutput オブジェクト、Simulink.SimulationOutput オブジェクトの配列、またはベクトルとして返されます。Simulink.SimulationOutput オブジェクトには、シミュレーションでログに記録されたすべてのデータとシミュレーションに関するメタデータ (タイミング情報や診断など) が格納されます。

入力引数としてモデル名のみを指定した場合、シミュレートするモデルで [単一のシミュレーション出力] パラメーターが無効になっていると、関数 sim からの出力がシミュレーション時間のベクトルになります。関数 sim のいずれの構文でも一貫した形式で結果を返すには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。

ヒント

  • 関数 sim でいずれの入力引数を指定するかに関係なく同じ形式で結果を返すには、[単一のシミュレーション出力] パラメーターを有効にしてモデルを保存します。このオプションが有効になっている場合、すべてのログ データとシミュレーションのメタデータ (タイミング情報や診断など) を含む Simulink.SimulationOutput オブジェクトとしてシミュレーション結果が返されます。複数のシミュレーションの結果を解析するときは、すべてのシミュレーション データとメタデータが単一のオブジェクトに格納されていた方が簡単です。

  • モデル コンフィギュレーション パラメーターのリストを取得するには、関数 getActiveConfigSet と関数 get_param を使用します。たとえば、モデル vdp のコンフィギュレーション パラメーターを表示するには、MATLAB コマンド ウィンドウで次のコマンドを入力します。

    configSet = getActiveConfigSet("vdp");
    configSetNames = get_param(configSet,"ObjectParameters")

    関数 get_param から返されるリストに、StopTimeSaveTimeSaveStateSaveOutputSignalLogging などのモデル コンフィギュレーション パラメーターが表示されます。

  • モデルの階層構造をシミュレートする場合、関数 sim に入力引数として指定したモデル コンフィギュレーション パラメーターは最上位モデルに適用されます。

  • 関数 sim を使用してシミュレーションを実行すると、エラーが発生するか指定した終了時間に達するまでシミュレーションが実行されます。プログラムによる一時停止と続行が可能な対話型シミュレーションをプログラムから実行するには、入力引数 SimulationCommand を指定して関数 set_param を使用します。詳細については、プログラムによるシミュレーションの実行を参照してください。

  • 終了時間を無限にしてモデルをシミュレートする場合、MATLAB コマンド ウィンドウから Ctrl + C を押してシミュレーションを停止します。この場合、シミュレーションが停止し、シミュレーション結果は MATLAB ワークスペースに保存されません。

  • 時間、状態、出力のログ記録の構成には [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択します。

  • モデル全体で信号のログを記録するには、信号ログを使用するか、To Workspace ブロックや Record, XY Graph ブロックなどのログ記録ブロックを使用します。信号ログの詳細については、信号ログを使用して、信号データをエクスポートを参照してください。

バージョン履歴

R2006a より前に導入

すべて展開する