Main Content

シミュレーション データの比較

シミュレーション データ インスペクターを使用すると、ワークスペースまたはシミュレーションのファイルやログからインポートした実行および個々の信号のデータおよびメタデータを比較できます。許容誤差を使って比較結果を解析できるほか、信号のプロパティや比較の制約を指定して比較の動作を構成できます。この例では、モデル slexAircraftExample のシミュレーションから記録したログ データを使用して以下の方法を示します。

  • 信号および実行を比較する。

  • シミュレーション データ インスペクターの [比較] ペインを使用して比較結果を解析する。

  • 信号許容誤差およびグローバル許容誤差を指定する。

  • 比較の制約を構成する。

比較に影響する許容誤差の計算や信号のプロパティの詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。データをプログラムで比較するには、関数 Simulink.sdi.compareRuns または関数 Simulink.sdi.compareSignals を使用します。

設定

この例は、シミュレーション データの検証からの続きです。このスクリプトを使用して、例に必要なデータを生成することもできます。

load_system('slexAircraftExample')

% Configure signals to log
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot', 1, 'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 3, 'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 4, 'on')

% Change Pilot signal to sine
set_param('slexAircraftExample/Pilot', 'WaveForm', 'sine')

% Simulate model
sim('slexAircraftExample')
ans = 
  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 
                   tout: [1235x1 double] 
                   xout: [1x1 Simulink.SimulationData.Dataset] 
                   yout: [1x1 Simulink.SimulationData.Dataset] 

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

% Change Pilot signal to square
set_param('slexAircraftExample/Pilot', 'WaveForm', 'square')

% Simulate Model
sim('slexAircraftExample')
ans = 
  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 
                   tout: [1381x1 double] 
                   xout: [1x1 Simulink.SimulationData.Dataset] 
                   yout: [1x1 Simulink.SimulationData.Dataset] 

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

信号の比較

信号を比較して、モデルにおける 2 つの信号の関係を解析できます。たとえば、Stick 入力信号を出力信号 alpha, rad と比較します。

  1. [比較] ペインに移動します。

  2. 比較に使用できるリストを表示するには、[ベースライン] ドロップダウンを展開し、[信号] を選択します。

    Baseline selection menu for comparisons.

  3. Stick (Run 1: slexAircraftExample) を選択します。

  4. [比較対象] ドロップダウンを展開し、alpha, rad (Run 1: slexAircraftExample) を選択します。

  5. [比較] をクリックします。

または、[検査] ペインで信号を右クリックし、コンテキスト メニューを使用して [ベースライン][比較対象] の信号を選択できます。

信号は同一ではないため、絶対許容誤差、相対許容誤差、時間許容誤差 (すべて既定で 0 に設定されている) の範囲内に一致しません。

Signal comparison results displayed on the Compare pane in the Simulation Data Inspector.

信号の時間の許容誤差

比較ビューの上部のプロットを見ると、alpha, rad 信号が Stick 信号より遅れていることがわかります。信号の比較のため、シミュレーション データ インスペクターは、[ベースライン] 信号に指定された許容誤差の値を使用します。遅れを考慮して、Stick 信号に時間許容誤差を追加します。

Stick 信号を選択し、[プロパティ] ペインの [時間の許容誤差] フィールドに 0.5 と入力します。[ベースライン] 信号の許容誤差を指定すると、その [グローバル許容誤差のオーバーライド] フィールドが自動的に yes に変更されます。[時間の許容誤差] フィールド以外をクリックすると、指定した信号レベルの許容誤差を使用して、比較が再度実行されます。信号に対してグローバルな許容誤差の値を使用する場合は、[グローバル許容誤差のオーバーライド] フィールドをクリックして、ドロップダウンから no を選択します。

シミュレーション データ インスペクターにより、プロットされた [ベースライン] 信号の周囲と、下部のサブプロットに表示された符号付き差分信号の周囲に許容誤差帯域が描画されます。差分プロットの上部にあるバーには、比較の許容誤差内領域と許容誤差外領域が緑または赤で示されます。

Signal comparison results after applying a time tolerance displayed on the Compare pane in the Simulation Data Inspector.

信号の振幅の許容誤差

時間の許容誤差は 2 つの信号間の位相差に対応していますが、振幅差により比較には依然として許容誤差外領域が含まれます。[絶対許容誤差] または [相対許容誤差] のいずれかとして振幅の許容誤差を追加できます。

絶対許容誤差を Stick 信号に追加するには、[プロパティ] ペインの [絶対許容誤差] フィールドに 0.05 と入力します。絶対許容誤差と時間の許容誤差の組み合わせにより、信号比較はパスします。

メモ

シミュレーション データ インスペクターは、各ポイントで指定した許容誤差の最も緩い解釈を使用して許容誤差領域を描画します。シミュレーション データ インスペクターが許容誤差帯域を計算する方法の詳細については、許容誤差の指定を参照してください。

Signal comparison results after applying a time tolerance and absolute tolerance displayed on the Compare pane in the Simulation Data Inspector.

実行の比較

シミュレーション データ インスペクターを使用すると、ある実行内のすべての信号を、別の実行のすべての信号と比較することもできます。実行を比較すると、モデル パラメーターを変更した場合の影響について有用な情報が得られる可能性があります。たとえば、コントロール スティックの入力信号に対するフィルターの周波数のカットオフを変更します。その後、シミュレーション データ インスペクターを使用して、ログ記録された信号への影響を評価します。

  1. モデル ワークスペースのデータにアクセスするには、slexAircraftExample モデルの [モデル化] タブの [設計][モデル エクスプローラー] をクリックします。

  2. モデル名の横にある矢印をクリックし、[モデル ワークスペース] を選択します。

  3. Ts の値を 0.1 から 1 に変更して [モデル エクスプローラー] を閉じます。

  4. 新しいフィルターでモデルをシミュレートします。

  5. シミュレーション データ インスペクターの [比較] ペインで、[ベースライン] ドロップダウンを展開し、[実行] を選択します。

  6. 実行のリストから Run 2: slexAircraftExample を選択します。

  7. [比較対象] ドロップダウンを展開し、Run 3: slexAircraftExample を選択します。

  8. [比較] をクリックします。

[比較] ペインには、比較された実行のすべての信号がリストされ、比較結果が [結果] 列にまとめられます。この例では、3 つの信号がすべて整列され、一致するものはありませんでした。[すべて表示] をクリックすると、それぞれの信号の比較が一致しなかった理由を確認できます。3 つのいずれの信号も許容誤差の範囲外です。

Comparison results summary on the Compare pane in the Simulation Data Inspector.

メモ

シミュレーション データ インスペクターでは、[比較対象] 実行からの信号と整列する [ベースライン] 実行からの信号のみが比較されます。[ベースライン] 実行からの信号が [比較対象] 実行からの信号と整列しない場合、その信号は警告と共に [比較] ペインに表示されます。 信号の整列の詳細については、信号の整列を参照してください。

比較結果をプロットするには、[比較] ペインに表示する信号を選択します。たとえば、q, rad/sec 信号の結果を選択します。上部のプロットに [ベースライン] の実行と [比較対象] の実行からの q, rad/sec 信号が表示されます。下部のプロットに信号間の差分と計算された許容誤差帯域が表示されます。

Run comparison results displayed on the Compare pane in the Simulation Data Inspector. The plots display data for the selected signal, q, rad/sec signal.

グローバル許容誤差

実行の比較で信号を解析するには、グローバル許容誤差を指定できます。グローバル許容誤差を指定するには、[詳細] をクリックします。[グローバル許容誤差] で、時間の許容誤差を「0.75」と入力し、絶対許容誤差を「0.075」と入力します。

Comparison options menu in the Simulation Data Inspector.

[比較] ボタンをクリックして比較を実行します。シミュレーション データ インスペクターにより、[ベースライン] 信号の周囲と符号付き差分プロット上に許容誤差帯域がプロットされます。新しい許容誤差値で、Stick 信号と q, rad/sec 信号は比較に成功します。

Run comparison results after specifying global tolerance values.

alpha, rad 信号を表示して、比較結果の許容誤差範囲外領域を解析します。ツール バーの矢印ボタン をクリックして、許容誤差範囲外領域を移動します。プロット上の 2 つのカーソルは、最初の許容誤差範囲外領域の開始と終了を示します。キーボードの矢印キーを使用して、信号と許容誤差の値を、各許容誤差範囲外領域全体を通して調べることができます。次の許容誤差範囲外領域を表示するには、ツール ストリップの右矢印ボタンをクリックします。

Cursors highlight the second out-of-tolerance region on the plot of the comparison results for the alpha, rad signal.

許容誤差範囲外領域を解決するには、グローバルな許容誤差値を変更するか、信号のプロパティを使用して信号固有の許容誤差を alpha, rad 信号に追加します。

比較の制約の構成

結果が一致となるか不一致となるかに影響する制約を比較に適用することもできます。たとえば、結果が一致するために、信号の時間ベクトルが必ず一致するように指定できます。この制約を指定するには、[詳細] をクリックし、[信号の時間ベクトルが必ず一致] を選択します。この制約で新しい比較を実行するには、[比較] をクリックします。

比較結果ですべての信号の結果が不一致として表示されるようになります。可変ステップ ソルバーを使用するモデルのシミュレーションから記録したログであり、シミュレーションごとに条件を変えているため、いずれかの信号で時間ベクトルが一致しません。比較結果が制約によって不一致となる場合、その信号の結果はシミュレーション データ インスペクターで計算されません。信号を選択すると、信号の結果が不一致となる理由がプロット領域に表示されます。

Mismatch comparison result for the alpha, rad signal when the comparison is configured with a constraint that signal time vectors must match.

構成できる比較の制約は次のとおりです。

  • 信号データ型が必ず一致

  • 信号の開始時間と終了時間が必ず一致

  • 信号の時間ベクトルが必ず一致

信号メタデータの一致を必須にする場合、指定したメタデータが一致しなければ結果が比較されないため、制約を指定することで不一致の結果をより迅速に返すことができます。

不一致の結果を最初に検出した時点で結果の計算を停止するように比較を構成することもできます。最初の不一致で停止するように比較を構成すると、信号メタデータで最初の不一致を検出したときに常に比較が停止します。最初の不一致の結果が信号データの比較における許容誤差外の結果が原因である場合に比較を停止するように選択することもできます。

シミュレーション データ インスペクターでは、ベースラインの実行と比較対象の実行の信号を常に整列し、信号の単位が一致するかどうかを常にチェックします。最初の不一致で停止するように比較を構成した場合、整列しない信号や単位が一致しない信号があると常に比較が停止する原因となります。1 つ以上の制約を選択することで、比較でチェックする追加のメタデータを指定できます。

比較のキャンセル

この例で使用する実行と信号は比較的小規模であり、迅速に比較が実行されます。長い信号や多くの信号を含む実行を比較するときは、比較にかかる時間が長くなることがあります。比較の実行中は、シミュレーション データ インスペクターにインクリメンタルな進行状況インジケーターが表示され、[比較] ボタンが [キャンセル] ボタンになり、クリックするといつでも比較をキャンセルできます。階層データの場合、比較ビューの [結果] 列に、各階層ノードに対する結果がまとめられます。

Comparison results summary for a run comparison that contains many signals and is still in progress.

関連するトピック