Main Content

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

Simulink.sdi.getAllRunIDs

シミュレーション データ インスペクターのすべての実行識別子を取得

説明

runIDs = Simulink.sdi.getAllRunIDs は、シミュレーション データ インスペクター リポジトリ内にあるすべての実行に対して、実行識別子で構成された行列を返します。

すべて折りたたむ

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して実行される多くのタスクは、シミュレーション実行用の実行 ID を取得することから始まります。この例では、実行の実行 ID を取得するいくつかの方法を示します。実行 ID を使用して、実行データとメタデータを含むSimulink.sdi.Runオブジェクトにアクセスしたり、関数Simulink.sdi.compareRunsを使用して実行比較を行うことができます。

実行の作成

モデル sldemo_fuelsys はログ作成用に構成済みです。モデルのシミュレーションを実行するときに、シミュレーション データ インスペクターは自動的に実行を作成し、実行 ID を割り当てます。

load_system('sldemo_fuelsys')
sim('sldemo_fuelsys')

Simulink.sdi.getAllRunIDs を使用した実行 ID の取得

関数Simulink.sdi.getAllRunIDsは、シミュレーション データ インスペクター リポジトリ内にある実行に関するすべての実行 ID の配列を、最後に作成された実行が配列の末尾になる順序で返します。

runIDs = Simulink.sdi.getAllRunIDs;
runID = runIDs(end);

Simulink.sdi.getRunIDByIndex を使用した実行 ID の取得

関数Simulink.sdi.getRunCountおよびSimulink.sdi.getRunIDByIndexを使用して、実行の実行 ID を取得することもできます。この方法は、count をカウント変数として使用して、シミュレーション データ インスペクター リポジトリ内の実行にインデックスを付ける場合にも役立ちます。

count = Simulink.sdi.getRunCount;
runID = Simulink.sdi.getRunIDByIndex(count);

Simulink.sdi.Run オブジェクトからの実行 ID の取得

実行に対応する Simulink.sdi.Run オブジェクトから実行 ID を取得することもできます。この例では、関数Simulink.sdi.getCurrentSimulationRunを使用して、sldemo_fuelsys モデルの最新のシミュレーションに対応する Run オブジェクトを取得します。関数Simulink.sdi.Run.getLatestを使用して、最後に作成された Run オブジェクトにアクセスすることもできます。

fuelsysRun = Simulink.sdi.getCurrentSimulationRun('sldemo_fuelsys');
runID = fuelsysRun.ID;

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、比較で使用するための信号の許容誤差値を指定できます。この例では slexAircraftExample モデルとシミュレーション データ インスペクターを使用し、制御入力の後にローパス フィルターの時定数を変更することによる影響を評価します。

モデルの設定

モデルを読み込んで、関心のある信号をログ記録用にマークします。この例では、q 信号と alpha 信号のデータを記録します。

load_system('slexAircraftExample')

Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

シミュレーションの実行

異なるローパス フィルターの時定数でシミュレーションを実行し、比較する結果を生成します。slexAircraftExample モデルは、そのモデルに関連付けられている変数をモデル ワークスペースに格納します。時定数値を変更するには、モデル ワークスペースにアクセスして関数 assignin を使用します。

out1 = sim('slexAircraftExample');

modelWorkspace = get_param('slexAircraftExample','modelworkspace');
assignin(modelWorkspace,'Ts',1)

out2 = sim('slexAircraftExample');

シミュレーション結果へのアクセスと比較

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、シミュレーション結果にアクセスします。各シミュレーションによって、一意の実行 ID をもつ実行がシミュレーション データ インスペクターに作成されます。実行 ID を使用して、シミュレーション結果を比較します。

runIDs = Simulink.sdi.getAllRunIDs;
runIDTs1 = runIDs(end-1);
runIDTs2 = runIDs(end);

関数 Simulink.sdi.compareRuns を使用して、シミュレーションで得たデータを比較します。次に、信号結果の Status プロパティを検査し、信号が既定の許容誤差 0 の範囲内にあるかどうかを確認します。

diffRun1 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);

sig1Result1 = getResultByIndex(diffRun1,1);
sig2Result1 = getResultByIndex(diffRun1,2);

sig1Result1.Status
ans = 
OutOfTolerance
sig2Result1.Status
ans = 
OutOfTolerance

信号の許容誤差を使用して実行を比較

既定では、信号はすべての許容誤差値に 0 を使用するため、信号が同一でない場合は、比較によって許容誤差外の結果が返されます。時定数の変更の影響をさらに解析するために、信号の許容誤差値を指定します。比較する実行内の Simulink.sdi.Signal オブジェクトのプロパティを使用して、プログラムによる比較の許容誤差を指定できます。比較ではベースラインの Signal オブジェクトに対して指定された許容誤差が使用されます。この例では、時間の許容誤差と絶対許容誤差の組み合わせを指定します。

許容誤差を指定するには、まず比較する必要がある実行内の各信号に対応する Simulink.sdi.Signal オブジェクトにアクセスします。

run1 = Simulink.sdi.getRun(runIDTs1);
sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run1,2);

sig1 = Simulink.sdi.getSignal(sigID1);
sig2 = Simulink.sdi.getSignal(sigID2);

Name プロパティをチェックして、各 Signal オブジェクトを特定します。

sig1.Name
ans = 
'q, rad/sec'
sig2.Name
ans = 
'alpha, rad'

ベースラインの実行で q 信号オブジェクトの AbsTol プロパティと TimeTol プロパティを使用する q 信号に対して、0.1 の絶対許容誤差と 0.6 の時間の許容誤差を指定します。

sig1.AbsTol = 0.1;
sig1.TimeTol = 0.6;

ベースラインの実行で alpha 信号オブジェクトの AbsTol プロパティと TimeTol プロパティを使用する alpha 信号に対して、0.2 の絶対許容誤差と 0.8 の時間の許容誤差を指定します。

sig2.AbsTol = 0.2;
sig2.TimeTol = 0.8;

実行を再度比較し、結果にアクセスします。

diffRun2 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);
sig1Result2 = getResultByIndex(diffRun2,1);
sig2Result2 = getResultByIndex(diffRun2,2);

比較結果が指定された許容誤差の範囲内にあるかどうかを判断するには、各信号の Status プロパティをチェックします。

sig1Result2.Status
ans = 
WithinTolerance
sig2Result2.Status
ans = 
WithinTolerance

出力引数

すべて折りたたむ

シミュレーション データ インスペクター リポジトリに含まれている実行 ID の行列。

R2017a で導入