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

Simulink.sdi.getAllRunIDs

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

説明

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

すべて折りたたむ

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

実行を作成するためのモデルのシミュレーション

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

% Load and simulate system
load_system('sldemo_fuelsys')
sim('sldemo_fuelsys')

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

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

% Get runID for most recent run
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);

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

設定

モデルを読み込み、q, rad/sec 信号および alpha, rad 信号をログ記録するようマークします。次に、モデルのシミュレーションを実行してベースライン実行を作成します。

% Load example model
load_system('slexAircraftExample')

% Mark the q, rad/sec and alpha, rad signals for logging
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

% Simulate system
out_1 = sim('slexAircraftExample');

モデル パラメーターの変更

モデル ワークスペースでモデル パラメーター Ts を変更して、入力ローパス フィルターの時定数を変更します。

% Change input filter time constant
modelWorkspace = get_param('slexAircraftExample','modelworkspace');
assignin(modelWorkspace,'Ts',1)

% Simulate again
out_2 = sim('slexAircraftExample');

実行の比較と結果の検査

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

% Get run data
runIDs = Simulink.sdi.getAllRunIDs;
runID1 = runIDs(end - 1);
runID2 = runIDs(end);

% Compare runs
diffRun1 = Simulink.sdi.compareRuns(runID1,runID2);

% Get signal result
sig1Result1 = getResultByIndex(diffRun1,1);
sig2Result1 = getResultByIndex(diffRun1,2);

% Check whether signals matched
sig1Result1.Status
ans = 
OutOfTolerance
sig2Result1.Status
ans = 
OutOfTolerance

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

信号は既定の許容誤差 0 の範囲内に一致しませんでした。時定数の変更の影響をさらに解析するために、信号の許容誤差をベースライン信号プロパティとの比較に追加し、パスに必要な許容誤差を特定します。この例では、時間の許容誤差と絶対許容誤差の組み合わせを使用します。

% Get signal object for sigID1
run1 = Simulink.sdi.getRun(runID1);
sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run1,2);

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

% Set tolerances for q, rad/sec
sig1.AbsTol = 0.1;
sig1.TimeTol = 0.6;

% Set tolerances for alpha, rad
sig2.AbsTol = 0.2;
sig2.TimeTol = 0.8;

% Run the comparison again
diffRun2 = Simulink.sdi.compareRuns(runID1,runID2);
sig1Result2 = getResultByIndex(diffRun2,1);
sig2Result2 = getResultByIndex(diffRun2,2);

% Check the result
sig1Result2.Status
ans = 
WithinTolerance
sig2Result2.Status
ans = 
WithinTolerance

出力引数

すべて折りたたむ

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

R2017a で導入