Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

sim

Simulink モデルのシミュレーション

説明

Simulink® モデルは動的システムを表します。モデルをシミュレートすることで、シミュレーション時間の関数として、システムの動作を把握できます。sim コマンドは指定されたモデルを使用して、引数をそのモデルに適用します。シミュレーションの最後に、sim コマンドは、それが適用されている引数を元に戻します。

simOut = sim(model) は、既存のモデル コンフィギュレーション パラメーターを使用して、指定されたモデルのシミュレーションを実行し、Simulink.SimulationOutput オブジェクト (単出力形式) として結果を返します。

下位互換性のある形式 (時間ベクトル) でシミュレーション結果を返すには、下位互換性のある構文を参照してください。

simOut = sim(model,Name,Value) は、パラメーターの名前と値のペアを使用して、指定されたモデルのシミュレーションを実行します。

simOut = sim(simIn) は、Simulink.SimulationInput オブジェクト simIn で指定された入力を使用してモデルをシミュレートします。複数のシミュレーションを連続して実行するために SimulationInput オブジェクトの配列とともに sim コマンドを使用できます。simInSimulink.SimulationInput オブジェクトの配列である場合、出力は Simulink.SimulationOutput オブジェクトの配列として返されます。

simOut = sim(model,ParameterStruct) は、構造体 ParameterStruct で指定されたパラメーター値を使用して、指定されたモデルのシミュレーションを実行します。

simOut = sim(model,ConfigSet) は、モデル コンフィギュレーション セット ConfigSet で指定されたコンフィギュレーション設定を使用して、指定されたモデルのシミュレーションを実行します。

Simulink.SimulationInput オブジェクトの配列を使用したブロック パラメーターの設定

この例では、SimulationInput オブジェクトを介してモデルのブロック パラメーターを変更します。

モデルを開きます。

openExample('simulink/OpenTheModelExample');
open_system('ex_sldemo_househeat');
load_system('ex_sldemo_househeat')

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

mdl = 'sldemo_househeat';
in = Simulink.SimulationInput(mdl);

ブロック パラメーターを変更します。

in = in.setBlockParameter('sldemo_househeat/Set Point','Value','300');

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

out = sim(in)

既定のパラメーター設定でモデルのシミュレーションを実行

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

[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインでは、[単一のシミュレーション出力] が既定で選択されています。そのため、sim は単出力形式 (シミュレーション オブジェクト) を使用してシミュレーション結果を返します。この選択によって、信号のログ記録に使用する Dataset 形式がオーバーライドされます。

simOut = sim('vdp')

構造体の sim コマンド ライン オプションを使用してモデルのシミュレーションを実行

モデル vdp をシミュレートし、状態を xoutNew に、出力を youtNew に保存します。

sim コマンドに、名前と値のペアの構造体 paramNameValStruct を使用してパラメーターを指定します。

paramNameValStruct.SaveState      = 'on';
paramNameValStruct.StateSaveName  = 'xoutNew';
paramNameValStruct.SaveOutput     = 'on';
paramNameValStruct.OutputSaveName = 'youtNew';
simOut = sim('vdp',paramNameValStruct)
simOut = 
  Simulink.SimulationOutput:

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

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

コンフィギュレーション セットの sim コマンド ライン オプションを使用してモデルのシミュレーションを実行

モデル vdp のシミュレーションを、絶対許容誤差を 1e-5 にして実行します。状態を xoutNew に、出力を youtNew に保存します。

sim コマンドに、コンフィギュレーション セット mdl_cs の名前と値のペアとしてパラメーターを指定します。

mdl = 'vdp';
load_system(mdl)
cs = getActiveConfigSet(mdl);
mdl_cs = cs.copy;
set_param(mdl_cs,'AbsTol','1e-5',...
         'SaveState','on','StateSaveName','xoutNew',...
         'SaveOutput','on','OutputSaveName','youtNew')
simOut = sim(mdl, mdl_cs)
simOut = 
  Simulink.SimulationOutput:

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

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

入力引数

すべて折りたたむ

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

例: simOut = sim('vdp')

シミュレーションのパラメーター設定を含む構造体。構造体として指定します。構造体内のフィールドはコンフィギュレーション パラメーターの名前です。対応する値はパラメーター値です。

モデルのコンフィギュレーション パラメーターのセット。Simulink.Configset オブジェクトとして指定します。詳細については、Simulink.ConfigSet を参照してください。

モデルのシミュレーション入力オブジェクト。モデル名を指定して作成された Simulink.SimulationInput オブジェクトとして指定されます。詳細については、Simulink.SimulationInput を参照してください。

SimulationInput オブジェクトを使用して、シミュレーションのブロック パラメーター、モデル パラメーター、変数および外部入力を指定します。

例: simIn = Simulink.SimulationInput('vdp')

名前と値のペアの引数

オプションのコンマ区切りされた Name,Value の引数ペアを指定します。ここで、Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'Solver','ode15s','TimeOut','30' は、ode15s ソルバーを使用してモデルをシミュレートし、SIimulationTime が 30 に達した時にタイムアウトが発生するように指定しています。

任意のモデル パラメーターとその値を sim コマンドに渡すことができます。

さらに、sim コマンドは、Configsetset_param では使用できない次のパラメーターを受け入れます。

SimulationMetadata オブジェクトにエラーを保存するオプション。'off' または 'on' で指定されます。既定では、シミュレーション中にエラーが発生した場合、sim コマンドは停止し、MATLAB® コマンド ウィンドウにエラーを報告します。'CaptureErrors','on' を指定すると、sim コマンドは SimulationMetadata オブジェクト内の ErrorDiagnostic 構造体にエラーを保存します。エラー メッセージは SimulationOutput オブジェクトの ErrorMessage プロパティに保存されます。

複数のシミュレーションをループで実行する場合に、このオプションを使用すると、1 つのシミュレーション エラーによってスクリプトや関数の続行が停止されることを防ぐことができます。

入力オブジェクトの配列を指定すると、sim コマンドは CaptureErrors を有効にして実行されます。エラーが発生すると、シミュレーションに関するエラー メッセージが、障害時点までのシミュレーション データとともに Simulink.SimulationMetadata オブジェクトに含まれます。

このオプションは、SIL モードおよび PIL モードでのシミュレーションには使用できません。

例: 'CaptureErrors','on'

シミュレーションのデバッグ モード オプション。'off' または 'on' で指定されます。'Debug' 引数の値を 'on' に設定すると、シミュレーションがデバッグ モードで開始されます (詳細については、デバッガーのグラフィカル ユーザー インターフェイスを参照)。このオプションの値には、デバッガーの開始後にデバッガーに送信されるコマンドの cell 配列を使用できます。

例: 'Debug','on'

このオプションは、ラピッド アクセラレータ モードでのみ使用できます。シミュレーション前の最新チェック。'on' または 'off' で指定されます。この値を 'off' に設定すると、Simulink による最新チェックが実行されません。ブロック内の開始/停止コールバックはスキップされます。parfor から sim コマンドを呼び出す場合は、この値を 'off' に設定します。

このオプションを 'off' に設定すると、モデルのブロック パラメーターの値に加えた変更 (ブロックのダイアログ ボックスや set_param 関数の使用、MATLAB 変数の値の変更などによって) は、シミュレーションに影響しなくなります。RapidAcceleratorParameterSets を使用して新しいパラメーター値をシミュレーションに直接渡します。

例: 'RapidAcceleratorUpToDateCheck','off'

シミュレーションの最大実行時間。正のスカラーとして指定します。時間を秒単位で指定し、シミュレーションを実行させます。TimeOut の値よりも長い時間モデルを実行すると、ソフトウェアにより警告が発行され、シミュレーションが停止します。TimeOut はシミュレーションに費やされる時間を表します。

例: 'TimeOut',60

シミュレーションのトレース機能。次のように指定されます。

  • 'minstep' は、解の変化があまりにも突然で可変ステップ ソルバーのステップ サイズで許容誤差値を満足させることができないような場合にシミュレーションを停止するように指定します。

  • 'siminfo' は、シミュレーションの開始時に有効なシミュレーション パラメーターの簡単な概要を与えます。

例: 'Trace','minstep','Trace','siminfo'

出力引数

すべて折りたたむ

ログ記録されたシミュレーション結果を含むシミュレーション オブジェクト。ログ記録されたすべてのシミュレーション結果を含む Simulink.SimulationOutput オブジェクトとして返されます。

すべてのシミュレーション出力 (ログ記録された時間、状態および信号) は単一の Simulink.SimulationOutput オブジェクトで返されます。モデルの時間、状態、ログ記録する出力など、ログに記録するデータを [モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用して選択します。To WorkspaceScope ブロックなどのブロックを使用して、信号をログ記録できます。信号ログの詳細については、信号のログを参照してください。

詳細

すべて折りたたむ

下位互換性のある構文

R2009b 以降、sim コマンドは並列計算とより互換性があるよう拡張されました。"単出力形式" が改良され、すべてのシミュレーション結果が単一のオブジェクトに保存されるようになり、出力変数の管理が簡略化されました。

R2009a 以前のリリースとの互換性のためには、次の構文を使用します。

[T,X,Y] = sim('model',Timespan, Options, UT)
[T,X,Y1,...,Yn] = sim('model',Timespan, Options, UT)

model 引数のみを指定した場合、Simulink は自動的に時間、状態および出力を、指定された出力引数に保存します。

出力引数を指定しない場合、Simulink は [コンフィギュレーション パラメーター][データのインポート/エクスポート] ペインの設定に基づいて、ログ記録するデータを決定します。Simulink は [単一のシミュレーション出力] パラメーターの設定に基づいて、シミュレーション出力を現在のワークスペースまたは変数 ans に格納します。

下位互換性のある構文の入力引数と出力引数
引数説明
T

時間ベクトルを返します。

X

状態が行列または構造形式で返されます。状態行列には連続状態とそれに続く離散状態が含まれています。

Y

出力が行列または構造形式で返されます。ブロック線図モデルでは、この変数にはルートレベルのブロックがすべて含まれています。

Y1,...,Yn

ブロック線図のモデルでのみ指定できる出力端子。この n はルートレベルのブロックの数でなければなりません。各出力端子は "Y1,...,Yn" 変数で返されます。

'model'

シミュレートするモデルの名前。

Timespan

時間範囲は TFinal[TStart TFinal] または [TStart OutputTimes TFinal] です。出力時間は T で返される時間点ですが、一般に T には追加の時間点が含まれます。

Options

名前と値のペアを使用して simset コマンドによって構造体内で作成されたオプション シミュレーション パラメーター。

UT

オプションの外部入力サポートされている式については、ルート レベルの入力端子へのデータの読み込みを参照してください。

Simulink が必要とするのは、model 引数のみです。Simulink は、未指定のオプションも含めて、すべての既定値をブロック線図から取得します。オプション引数を指定すると、指定した設定はブロック線図の設定をオーバーライドします。

sim の入力引数を空行列 [ ] として指定すると、Simulink はその引数の既定値を使用します。

ヒント

  • sim コマンドを使用して指定されるパラメーターは、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスで定義されている値をオーバーライドします。元の構成の値はシミュレーションの最後に復元されます。

  • model reference ブロックを用いたモデルの場合、パラメーター指定の適用先は最上位モデルとなります。

  • 終了時間を無限にしてモデルをシミュレートする場合、シミュレーションを停止するには Ctrl+C キーを押さなければなりません。Ctrl+C はシミュレーションを中断し、そのシミュレーション結果は MATLAB ワークスペースに保存されません。

  • シミュレーションの時間範囲を指定するには、StartTime パラメーターと StopTime パラメーターを指定しなければなりません。

  • モデルの時刻、状態または出力をログ記録するには、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用します。

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

  • モデル vdp のシミュレーション パラメーターのリストを取得するには、MATLAB のコマンド ウィンドウから次を入力します。

    configSet = getActiveConfigSet('vdp')
    configSetNames = get_param(configSet, 'ObjectParameters')  

    このコマンドは、'StopTime''SaveTime''SaveState''SaveOutput''SignalLogging' などのシミュレーション パラメーターを含む、複数のオブジェクト パラメーターを一覧表示します。

R2006a より前に導入