ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

sim

動的システムのシミュレーション

説明

simOut = sim(model) は、既存のモデル コンフィギュレーション パラメーターを使用して、指定されたモデルのシミュレーションを実行し、Simulink.SimulationOutput オブジェクト (単出力形式) または Simulink バージョン R2009a 以前と互換性のある時間ベクトルとして結果を返します。下位互換性のある構文を参照してください。

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

下位互換性のある形式 (時間ベクトル) でシミュレーション結果を返すために、次を行います。

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

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

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

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

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

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

モデル vdp のシミュレーションを、絶対許容誤差を 1e-5 にして、ラピッド アクセラレータ モードで実行します。状態は xoutNew に、出力は youtNew に保存されます。

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

rtp = Simulink.BlockDiagram.buildRapidAcceleratorTarget('vdp');
### Building the rapid accelerator target for model: vdp
### Successfully built the rapid accelerator target for model: vdp
simOut = sim('vdp','SimulationMode','rapid','AbsTol','1e-5',...
            'StopTime', '30', ... 
            'ZeroCross','on', ...
            'SaveTime','on','TimeSaveName','tout', ...
            'SaveState','on','StateSaveName','xoutNew',...
            'SaveOutput','on','OutputSaveName','youtNew',...
            'SignalLogging','on','SignalLoggingName','logsout')
simOut = 
  Simulink.SimulationOutput:

                   tout: [86x1 double] 
                xoutNew: [86x2 double] 
                youtNew: [86x2 double] 

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

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

モデル vdp のシミュレーションを、絶対許容誤差を 1e-5 にして、ラピッド アクセラレータ モードで実行します。状態は xoutNew に、出力は youtNew に保存されます。

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

paramNameValStruct.SimulationMode = 'rapid';
paramNameValStruct.AbsTol         = '1e-5';
paramNameValStruct.SaveState      = 'on';
paramNameValStruct.StateSaveName  = 'xoutNew';
paramNameValStruct.SaveOutput     = 'on';
paramNameValStruct.OutputSaveName = 'youtNew';
simOut = sim('vdp',paramNameValStruct)
### Building the rapid accelerator target for model: vdp
### Successfully built the rapid accelerator target for model: vdp
simOut = 
  Simulink.SimulationOutput:

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

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

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

モデル vdp のシミュレーションを、絶対許容誤差を 1e-5 にして、ラピッド アクセラレータ モードで実行します。状態は xoutNew に、出力は youtNew に保存されます。

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

mdl = 'vdp';
load_system(mdl)
simMode = get_param(mdl, 'SimulationMode');
set_param(mdl, 'SimulationMode', 'rapid')
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);
### Building the rapid accelerator target for model: vdp
### Successfully built the rapid accelerator target for model: vdp
set_param(mdl, 'SimulationMode', simMode)

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

既定のモデル コンフィギュレーション パラメーターを使用して、モデル vdp のシミュレーションを実行します。

simOut = sim('vdp','ReturnWorkspaceOutputs','on')

入力引数

すべて折りたたむ

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

例: simOut = sim('vdp')

シミュレーションのコンフィギュレーション パラメーター名をフィールドとする構造体。対応する値はパラメーターの値です。

例: simOut = sim('vdp',paramNameValStruct)

モデルのコンフィギュレーション パラメーターのセット。

例: simOut = sim('vdp',mdl_cs)

モデル名を指定して作成された SimulationInput オブジェクト。詳細については、Simulink.SimulationInput を参照してください。

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

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

例: simIn = simIn.setBlockParameter('CSTR/Feed Temperature', 'Value', '300'); simIn = simIn.setModelParameter('StartTime', '1'); simIn = simIn.setVariable('FeedTemp0', 320)

名前と値のペアの引数

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

例: 'Solver','ode15s','TimeOut','30' では、ode15s ソルバーを使用して、最大 30 秒のシミュレーション時間でモデルのシミュレーションを実行することを指定します。

sim コマンドは、すべてのシミュレーション パラメーターを、名前と値のペアの引数として受け入れます。すべてのシミュレーション パラメーターのリストについては、モデル パラメーターを参照してください。

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

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

このオプションは、複数のシミュレーションをループで実行する場合に、1 つのシミュレーション エラーでスクリプトや関数の続行の停止を防ぐために役立ちます。

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

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

例: 'CaptureErrors','on'

ラピッド アクセラレータ モードの場合のみ、次のモデルのファイル名にこの接尾辞文字ベクトルを追加します (ファイル拡張子の前)。

  • モデルが To File ブロックを含んでいる。

  • sim コマンドを parfor から呼び出す。

例: 'ConcurrencyResolvingToFileSuffix','model'

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

例: 'Debug','on'

LoggingToFile の名前と値のペアについて、永続ストレージへのログ記録を有効にする場合に使用します。データのログ記録先である MAT ファイルを指定します。

ヒント

別のロケールにあるロケールのファイル名を使用しないでください。

例: 'LoggingFileName','out.mat'

Dataset 形式を使用するログ データを永続ストレージ (MAT ファイル) に格納します。

この機能は、メモリの問題を引き起こす可能性がある大量のデータのログを作成する際に使用します。詳細については、永続ストレージへのデータの記録を参照してください。

ヒント

格納されたデータにアクセスするときメモリ不足が発生することを避けるため、MAT ファイルに格納されているオブジェクトに参照を使用してアクセスできます。参照で格納されたデータにアクセスするには、Simulink.SimulationData.DatasetRef オブジェクトを使用します。このオブジェクトを使用すると、信号のログと状態のデータがモデル ワークスペースにインクリメントに (信号ごとに) 読み込まれます。他の種類のログのデータにアクセスすると、すべてのデータが一度に読み込まれます。

例: 'LoggingToFile','on'

(ラピッド アクセラレータ モードのみ) parfor でラピッド アクセラレータのシミュレーションを実行するための実行時パラメーターを含んだ構造体を返します。

例: 'RapidAcceleratorParameterSets',parameterSet(idx)

(ラピッド アクセラレータ モードのみ) 最新チェックを有効または無効にします。この値を 'off' に設定すると、Simulink® による最新チェックが実行されません。ブロック内の開始/停止コールバックはスキップされます。parfor から sim コマンドを呼び出す場合は、この値を 'off' に設定します。

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

例: 'RapidAcceleratorUpToDateCheck','off'

モデル内で定義された MATLAB 式を評価するワークスペースを指定します。SrcWorkspace の設定が、アクセラレータ モードで実行される参照モデルに影響を与えることはありません。parfor ループ内で SrcWorkspacecurrent に設定すると、透明性の違反が発生します。

例: 'SrcWorkspace','current'

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

例: 'TimeOut',60

シミュレーションのトレース機能を有効にします (1 つ以上をコンマ区切りのリストで指定)。

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

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

既定の設定では、Simulink は警告メッセージを発行して、シミュレーションを継続します。

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

出力引数

すべて折りたたむ

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

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

メモ

 sim コマンドの出力は常に、単一のシミュレーション出力オブジェクトである SimOut に返されます。次にシミュレーション出力オブジェクトがワークスペースに返されます。

詳細

すべて折りたたむ

下位互換性のある構文

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 はその引数の既定値を使用します。

下位互換性のある構文例

このコマンドは、vdp モデルを使用してファン デル ポールの方程式をシミュレートします。このコマンドはすべての既定のパラメーターを使用します。

[t,x,y] = sim('vdp')

このコマンドは、vdp モデルに関連付けられているパラメーターの値を使用してファン デル ポールの方程式をシミュレートします。

[t,x,y] = sim('vdp', [0 10]);

ヒント

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

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

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

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

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

  • 信号をログ記録するには、To Workspace ブロックや Scope ブロックのようなブロックを使用するか、[信号とスコープのマネージャー] を使用して結果を直接ログ記録します。

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

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

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

R2006a より前に導入