Main Content

Simulink.sdi.DiffRunResult

実行比較結果へのアクセス

説明

Simulink.sdi.DiffRunResult オブジェクトは実行比較メタデータおよび比較結果へのアクセスを提供します。関数 getSignalByIndex を使用して、実行比較の各信号に対するメタデータと比較結果にアクセスします。

作成

Simulink.sdi.DiffRunResult オブジェクトはシミュレーション データ インスペクターを使用して比較を実行すると作成されます。

UI を使用してデータを比較する場合、関数 Simulink.sdi.getCurrentComparison を使用して Simulink.sdi.DiffRunResult オブジェクトの結果にアクセスします。

関数 Simulink.sdi.compareRuns または関数 compare を使用したプログラムによる比較は DiffRunResult オブジェクトを返します。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

DiffRunResult オブジェクトの作成に使用される MATLAB® のバージョン。文字ベクトルとして返されます。

この プロパティ は読み取り専用です。

比較ベースライン実行の実行識別子。整数として返されます。

この プロパティ は読み取り専用です。

比較対象の実行の実行識別子。整数として返されます。

この プロパティ は読み取り専用です。

比較の 2 つの実行間に整列された信号の数。整数として返されます。比較のための信号の整列方法の詳細については、信号の整列を参照してください。

この プロパティ は読み取り専用です。

Simulink.sdi.DiffRunResult オブジェクトが作成された日付と時刻。datetime オブジェクトとして返されます。

データ型: datetime

この プロパティ は読み取り専用です。

実行比較に使用されるグローバル許容誤差値。フィールドをもつ構造体として返されます。

  • AbsTol — 実行比較で使用されるグローバルな絶対許容誤差。

  • RelTol — 実行比較で使用されるグローバルな相対許容誤差。

  • TimeTol — 実行比較で使用されるグローバルな時間の許容誤差。

比較するために許容誤差を使用して計算する方法の詳細については、許容誤差の指定を参照してください。

この プロパティ は読み取り専用です。

比較結果の概要。信号の比較結果に含まれる可能性がある各 Status に対してフィールドをもつ構造体として返されます。各フィールドの値は、対応する Status をもつ実行比較の信号の数を示します。

  • WithinTolerance — 信号比較が完了し、比較したすべてのデータ点が指定した許容誤差内にあります。

  • OutOfTolerance — 信号比較が完了し、比較した一部のデータ点が指定した許容誤差外にあります。

  • Unaligned — ベースライン実行からの信号が比較対象の実行の信号と整列しませんでした。

  • Empty — ベースライン実行または比較対象の実行で整列後の信号にデータは含まれていません。

  • EmptySynced — ベースライン実行または比較対象の実行で同期後の信号にデータは含まれていません。空の同期後の信号とは、信号がオーバーラップしないか、intersection 同期メソッドを指定した場合は、同じ時間点が含まれないことを意味します。

  • Canceled — ユーザーが比較をキャンセルしたため、信号結果は計算されませんでした。

  • Pending — 比較は処理中であり、信号結果の計算は開始していません。

  • Processing — 信号結果比較が処理中です。

  • UnitsMismatch — ベースライン実行と比較対象の実行で信号単位が一致しません。

  • DataTypeMismatch — ベースライン実行と比較対象の実行で信号データ型が一致しません。信号データ型をチェックするように設定された比較の結果のみが、このステータスをもつことができます。

  • TimeMismatch — ベースライン実行と比較対象の実行で信号時間ベクトルが一致しません。信号時間ベクトルをチェックするように設定された比較の結果のみが、このステータスをもつことができます。

  • StartStopMismatch — ベースライン実行と比較対象の実行で信号開始時間と終了時間が一致しません。信号開始時間と終了時間をチェックするように設定された比較の結果のみが、このステータスをもつことができます。

  • Unsupported — シミュレーション データ インスペクターの比較アルゴリズムは、この信号のタイプをサポートしていません。たとえば、double に変換すると精度が低下するデータ型をもつ信号はサポートされていません。

整列、許容誤差、同期の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。追加のメタデータをチェックするように比較を設定する方法の詳細については、Simulink.sdi.compareRuns を参照してください。

この プロパティ は読み取り専用です。

比較に使用される構成オプション。n 行 2 列の cell 配列として返されます。cell 配列の各行は比較に使用されるオプションに対応しています。すべての比較で整列された信号単位が一致しなければならないため、Options プロパティには単位が一致しなければならないことを示す行が常に含まれます。その他の可能な構成オプションは、関数 Simulink.sdi.compareRuns の名前と値のペアに対応します。

  • DataType

  • Time

  • StartStop

  • StopOnFirstMismatch

この プロパティ は読み取り専用です。

実行比較のステータス。比較がどのように終了したのかを示し、次のいずれかとして返されます。

  • Completed — 比較はすべての結果を計算して終了した

  • Canceled — 比較はユーザーが UI で比較演算をキャンセルしたために終了した

  • Stopped — 比較は、比較で不一致が検出され、最初の不一致で終了するように設定されていたため終了した

この プロパティ は読み取り専用です。

残りの信号を比較せずに実行比較が終了する原因となった信号比較の信号結果。Simulink.sdi.DiffSignalResult オブジェクトとして返されます。不一致が検出されずに比較が終了した場合、または最初の不一致で比較が終了するように比較が設定されていない場合、StopReason プロパティは空です。関数 Simulink.sdi.compareRuns'StopOnFirstMismatch' の名前と値のペアを使用して、最初の不一致で終了するようにシミュレーションを設定できます。

オブジェクト関数

getResultByIndex信号の比較結果を返す
getResultsByNameReturn signal comparison results based on signal name
saveResult比較結果の MLDATX ファイルへの保存

すべて折りたたむ

シミュレーション データ インスペクターを使用して、実行した比較で使用する信号の許容誤差値をプログラムによって指定できます。この例では、航空機用縦方向飛行制御システムのモデルをシミュレーションして収集したデータを比較します。各シミュレーションは入力フィルターの時定数に異なる値を使用して、入出力信号をログに記録します。シミュレーション データ インスペクターと信号許容誤差を使用して結果を比較し、時定数の変更の影響を解析します。

まず、シミュレーション データを含むセッション ファイルを読み込みます。

Simulink.sdi.load('AircraftExample.mldatx');

セッション ファイルには 4 つの実行が含まれます。この例では、ファイル内の最初の 2 つの実行からデータを比較します。ファイルから読み込まれた最初の 2 つの実行について、Simulink.sdi.Run オブジェクトにアクセスします。

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

次に、許容誤差を指定しないで 2 つの実行を比較します。

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

関数 getResultByIndex を使用して q 信号と alpha 信号の比較結果にアクセスします。

qResult = getResultByIndex(noTolDiffResult,1);
alphaResult = getResultByIndex(noTolDiffResult,2);

各信号結果の Status をチェックし、比較結果が許容誤差の範囲内または範囲外にあるかどうかを判断します。

qResult.Status
ans = 
  ComparisonSignalStatus enumeration

    OutOfTolerance

alphaResult.Status
ans = 
  ComparisonSignalStatus enumeration

    OutOfTolerance

比較では、すべての許容誤差に 0 の値を使用するため、OutOfTolerance の結果は信号が同一でないことを意味します。

信号の許容誤差値を指定して、時定数の影響をさらに解析できます。比較対象の信号に対応する Simulink.sdi.Signal オブジェクトのプロパティを設定し、許容誤差を指定します。比較ではベースライン信号に対して指定された許容誤差が使用されます。この例では、時間の許容誤差と絶対許容誤差を指定します。

許容誤差を指定するには、最初にベースライン実行から Signal オブジェクトにアクセスします。

runTs1 = Simulink.sdi.getRun(runIDTs1);
qSig = getSignalsByName(runTs1,'q, rad/sec');
alphaSig = getSignalsByName(runTs1,'alpha, rad');

AbsTol プロパティと TimeTol プロパティを使用して、q 信号に対して 0.1 の絶対許容誤差と 0.6 の時間の許容誤差を指定します。

qSig.AbsTol = 0.1;
qSig.TimeTol = 0.6;

alpha 信号に対して、0.2 の絶対許容誤差と 0.8 の時間の許容誤差を指定します。

alphaSig.AbsTol = 0.2;
alphaSig.TimeTol = 0.8;

結果を再度比較します。比較の結果にアクセスし、各信号の Status プロパティをチェックします。

tolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);
qResult2 = getResultByIndex(tolDiffResult,1);
alphaResult2 = getResultByIndex(tolDiffResult,2);

qResult2.Status
ans = 
  ComparisonSignalStatus enumeration

    WithinTolerance

alphaResult2.Status
ans = 
  ComparisonSignalStatus enumeration

    WithinTolerance

関数 Simulink.sdi.compareRuns を使用して、データ型と開始時間および終了時間を含む信号データとメタデータを比較できます。単一の比較で 1 つ以上のメタデータに不一致があるかどうかをチェックする場合があります。信号メタデータに不一致があるかどうかをチェックすると、Simulink.sdi.DiffSignalResult オブジェクトの Status プロパティがメタデータの不一致を示している可能性があるため、Simulink.sdi.DiffRunResult オブジェクトの Summary プロパティが基本的な比較と異なる場合があります。関数 Simulink.sdi.compareRuns を使用して、インポートされたデータとシミュレーションからログ記録されたデータの比較を構成できます。

この例では、DiffSignalResult オブジェクトの Summary が信号の不一致に関する特定の情報をどのように提供できるのかを示す、ワークスペース データから 3 つの方法で作成された実行の比較を構成します。

ワークスペース データの作成

関数 Simulink.sdi.compareRuns は時系列データを比較します。ベースライン信号として使用する正弦波のデータを timeseries 形式を使用して作成します。timeseriesWave Data という名前を付けます。

time = 0:0.1:20;
sig1vals = sin(2*pi/5*time);
sig1_ts = timeseries(sig1vals,time);
sig1_ts.Name = 'Wave Data';

2 つ目の正弦波を作成してベースライン信号と比較します。少し異なる時間ベクトルを使用して信号を減衰し、2 つの信号が同一でなくなるようにします。信号データを single データ型にキャストします。この timeseries オブジェクトにも Wave Data という名前を付けます。シミュレーション データ インスペクターの比較アルゴリズムは名前を使用した比較のためにこれらの信号を整列します。

time2 = 0:0.1:22;
sig2vals = single(0.98*sin(2*pi/5*time2));
sig2_ts = timeseries(sig2vals,time2);
sig2_ts.Name = 'Wave Data';

シミュレーション データ インスペクターでの実行の作成と比較

関数 Simulink.sdi.compareRunsSimulink.sdi.Run オブジェクトに含まれるデータを比較します。関数 Simulink.sdi.createRun はシミュレーション データ インスペクターでデータ用に実行を作成します。関数 Simulink.sdi.createRun は作成された各実行について実行 ID を返します。

runID1 = Simulink.sdi.createRun('Baseline Run','vars',sig1_ts);
runID2 = Simulink.sdi.createRun('Compare to Run','vars',sig2_ts);

関数 Simulink.sdi.compareRuns を使用して実行を比較できます。比較アルゴリズムは信号データを double データ型に変換し、差分信号を計算する前に信号データを同期します。

basic_DRR = Simulink.sdi.compareRuns(runID1,runID2);

返された Simulink.sdi.DiffRunResult オブジェクトの Summary プロパティをチェックし、比較の結果を確認します。

basic_DRR.Summary
ans = struct with fields:
       OutOfTolerance: 1
      WithinTolerance: 0
            Unaligned: 0
        UnitsMismatch: 0
                Empty: 0
             Canceled: 0
          EmptySynced: 0
     DataTypeMismatch: 0
         TimeMismatch: 0
    StartStopMismatch: 0
          Unsupported: 0

信号間の差が許容誤差から外れています。

実行を比較してデータ型の一致をチェック

システム要件に応じて、比較する信号のデータ型を一致させる場合があります。関数 Simulink.sdi.compareRuns を使用し、データ型に不一致があるかどうかをチェックしてレポートする比較アルゴリズムを構成できます。

dataType_DRR = Simulink.sdi.compareRuns(runID1,runID2,'DataType','MustMatch');
dataType_DRR.Summary
ans = struct with fields:
       OutOfTolerance: 0
      WithinTolerance: 0
            Unaligned: 0
        UnitsMismatch: 0
                Empty: 0
             Canceled: 0
          EmptySynced: 0
     DataTypeMismatch: 1
         TimeMismatch: 0
    StartStopMismatch: 0
          Unsupported: 0

ベースライン信号のデータは double データ型であるのに対し、ベースラインと比較した信号のデータが single データ型であるため、信号比較の結果は DataTypeMismatch になります。

実行を比較し、開始時間と終了時間の一致をチェック

関数 Simulink.sdi.compareRuns を使用して、整列された信号の開始時間と終了時間が同じであるかどうかをチェックする比較アルゴリズムを構成できます。

startStop_DRR = Simulink.sdi.compareRuns(runID1,runID2,'StartStop','MustMatch');
startStop_DRR.Summary
ans = struct with fields:
       OutOfTolerance: 0
      WithinTolerance: 0
            Unaligned: 0
        UnitsMismatch: 0
                Empty: 0
             Canceled: 0
          EmptySynced: 0
     DataTypeMismatch: 0
         TimeMismatch: 0
    StartStopMismatch: 1
          Unsupported: 0

ワークスペースで作成された信号に異なる終了時間があるため、信号の比較結果は StartStopMismatch になります。

代替方法

シミュレーション データ インスペクター UI を使用して、比較結果を表示および検証できます。詳細については、シミュレーション データの比較を参照してください。

ソフトウェア テストについては、Simulink.sdi.constraints.MatchesSignal 制約を参照してください。

バージョン履歴

R2012b で導入