Simulink.sdi.compareSignals
2 つの Simulink.sdi.Signal
オブジェクトでデータを比較する
構文
説明
は信号 ID の diff
= Simulink.sdi.compareSignals(sigID1
,sigID2
)sigID1
と sigID2
に対応する信号を比較し、その結果を Simulink.sdi.DiffSignalResult
オブジェクトに返します。比較結果を計算する方法の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。
は、1 つ以上の名前と値の引数で指定されたオプションを使用して、信号 ID の diff
= Simulink.sdi.compareSignals(sigID1
,sigID2
,Name=Value
)sigID1
と sigID2
に対応する信号を比較します。 (R2023a 以降)
例
シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、同じ実行内の信号を比較できます。この例では、航空機用縦方向フライト コントローラーの入力信号と出力信号を比較します。
飛行制御データを含むシミュレーション データ インスペクターのセッション ファイルを読み込みます。
Simulink.sdi.load("AircraftExample.mldatx");
最新の実行にアクセスするには、Simulink.sdi.Run.getLatest
関数を使用します。
aircraftRun = Simulink.sdi.Run.getLatest;
Simulink.sdi.getSignalsByName
関数を使用して、コントローラーへの入力を表す Stick
信号と、出力を表す alpha, rad
信号にアクセスします。
stick = getSignalsByName(aircraftRun,"Stick"); alpha = getSignalsByName(aircraftRun,"alpha, rad");
信号 ID を使い、Simulink.sdi.compareSignals
関数を使用して Stick
信号と alpha, rad
信号を比較します。Stick
信号がベースラインです。そのベースラインと比較する信号が alpha, rad
信号です。
comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
match = ComparisonSignalStatus enumeration OutOfTolerance
比較結果は許容誤差の範囲外です。関数 Simulink.sdi.view
を使用して、シミュレーション データ インスペクターを開き、比較結果を表示および解析できます。
Simulink.sdi.view
比較に使用する時間と振幅の許容誤差値を指定できます。比較のベースライン信号に指定された許容誤差値が比較に使用されます。位相シフトを考慮して、Stick
信号に 1
の時間の許容誤差を設定します。振幅の違いを考慮して、Stick
信号に 0.1
の絶対許容誤差値を設定します。
stick.TimeTol = 1; stick.AbsTol = 0.1;
信号を再度比較します。今回は、絶対許容誤差と時間の許容誤差により、信号比較はパスします。
comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
match = ComparisonSignalStatus enumeration WithinTolerance
この例では、シミュレーション データ インスペクターの関数 Simulink.sdi.compareSignals
を使用して異なるシミュレーション実行の信号を比較する方法について説明します。比較する対象の信号が 1 つのみの場合、信号比較を使用すると比較データをもつ Simulink.sdi.diffSignalResult
オブジェクトが直接返されます。
シミュレーション データの生成
slexAircraftExample
モデルを使用してシミュレーション実行を生成します。実行間で入力フィルターの時定数を変更します。
% Load example model load_system('slexAircraftExample') % Mark the alpha, rad signal for streaming Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on') % Simulate system out_1 = sim('slexAircraftExample'); % Change input filter time constant modelWorkspace = get_param('slexAircraftExample','modelworkspace'); assignin(modelWorkspace,'Ts',0.2) % Simulate again out_2 = sim('slexAircraftExample');
信号比較のための信号 ID を取得
実行 ID を使用して実行オブジェクトを作成したら、getSignalIDByIndex
を使用して Simulink.sdi.compareSignals
に渡す信号 ID を取得します。
% Get run data
runIDs = Simulink.sdi.getAllRunIDs;
runID1 = runIDs(end-1);
runID2 = runIDs(end);
run1 = Simulink.sdi.getRun(runID1);
run2 = Simulink.sdi.getRun(runID2);
sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run2,1);
信号の比較
信号を比較し、シミュレーション データ インスペクターを開いて結果を表示します。
diffResult = Simulink.sdi.compareSignals(sigID1,sigID2); Simulink.sdi.view
入力引数
ベースライン信号の信号 ID。整数として指定します。シミュレーション データ インスペクターは実行が作成されると各信号に信号 ID を割り当てます。次のいずれかの関数を使用して信号の信号 ID を取得します。
比較する信号の信号 ID。整数として指定します。シミュレーション データ インスペクターは実行が作成されると各信号に信号 ID を割り当てます。次のいずれかの関数を使用して信号の信号 ID を取得します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: diff = Simulink.sdi.compareSignals(sigID1,sigID2,DataType="MustMatch")
信号のデータ型に対する比較の感度。"MustMatch"
として指定します。比較される信号の数値データ型の不一致について、比較が影響を受けるようにするには、DataType="MustMatch"
を指定します。
信号のデータ型が一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは DataTypeMismatch
に設定されます。
関数 Simulink.sdi.compareSignals
は、信号データを同期して比較する前にデータ型を比較します。この名前と値の引数を指定しない場合、比較によるデータ型のチェックで string と数値データの比較の検出のみが行われます。string と数値データの比較では、結果は計算されず、結果のステータスは DataTypeMismatch
になります。異なる数値データ型をもつ信号については、比較で結果が計算されます。
最初の不一致で停止するように比較を構成すると、データ型の不一致によって比較は停止します。
信号の時間ベクトルに対する比較の感度。"MustMatch"
として指定します。比較される信号の時間ベクトルの不一致について、比較が影響を受けるようにするには、Time="MustMatch"
を指定します。この名前と値の引数を指定すると、信号データを同期して比較する前に、アルゴリズムによって時間ベクトルの比較が行われます。
時間ベクトルが一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは TimeMismatch
に設定されます。
この名前と値の引数を指定しない限り、比較では信号時間ベクトルの差異に影響を受けません。時間ベクトルの差異に影響を受けない比較では、比較の前に比較アルゴリズムによって信号の同期が行われます。同期の動作の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。
時間ベクトルが一致しなければならないよう指定し、また最初の不一致で停止するように比較を構成すると、時間ベクトルの不一致によって比較は停止します。
信号の開始時間と終了時間に対する比較の感度。"MustMatch"
として指定します。信号の開始時間と終了時間の不一致について、比較が影響を受けるようにするには、StartStop="MustMatch"
を指定します。この名前と値の引数を指定すると、信号データを同期して比較する前に、アルゴリズムによって開始時間と終了時間の比較が行われます。
開始時間と終了時間が一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは StartStopMismatch
に設定されます。
開始時間と終了時間が一致しなければならないよう指定し、また最初の不一致で停止するように比較を構成すると、開始時間と終了時間の不一致によって比較は停止します。
信号の単位に対する比較の感度。"Ignore"
で指定します。信号の単位の不一致を比較で無視する場合は Units="Ignore"
を指定します。
この名前と値の引数を指定しない限り、整列された信号の単位の違いが比較で感知されます。この名前と値の引数を指定しない場合、ベースライン信号と比較信号の両方に一致していない単位があると、結果の Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティが UnitsMismatch
に設定されます。単位が一方の信号にしかない場合、比較で違いは感知されません。
信号の単位の不一致を比較で無視するように指定すると、最初の不一致で比較を停止するように構成している場合も、単位の不一致では比較は停止しません。
最初に検出された不一致で比較が停止するかどうか。"Metadata"
または "Any"
として指定します。停止した比較では、多次元信号の比較時にすべてのチャネルについて必ずしも結果が計算されない可能性があり、不一致となった結果をより迅速に返す可能性があります。
"Metadata"
— メタデータの不一致によって比較が停止します。メタデータの比較は信号データの比較の前に行われます。シミュレーション データ インスペクターでは、常に信号を整列します。最初の不一致で停止するよう比較を構成すると、整列されていない信号で常に比較が停止します。
シミュレーション データ インスペクターでは、単位がベースライン信号と比較信号の両方にある場合、既定では整列された信号の単位を比較します。最初の不一致で停止するよう比較を構成すると、単位の不一致で比較が停止します。信号の単位の不一致を比較で無視するには
Units="Ignore"
を指定します。追加の名前と値の引数を指定して、信号のデータ型、開始時間と終了時間、および時間ベクトルなどの追加のメタデータをチェックし、その最初の不一致で停止するよう、比較を構成できます。
"Any"
— メタデータまたは信号データの不一致によって比較が停止します。
多次元信号の各チャネルの比較結果を計算するかどうか。logical true
(1
) または false
(0
) として指定します。
true
または1
- 非スカラーのサンプル値をもつ単一の信号として表される多次元信号をスカラーのサンプル値をもつ一連の信号に展開し、各信号の比較結果を計算します。多次元信号が非スカラーのサンプル値をもつ単一の信号として表されるシミュレーション データ インスペクターでの表現は変わりません。
false
または0
— 非スカラーのサンプル値をもつ単一の信号として表される多次元信号の比較結果を計算しません。
出力引数
信号の比較結果。Simulink.sdi.DiffSignalResult
オブジェクトとして返されます。複素信号の比較結果は 2 つの DiffSignalResult
オブジェクトの配列として返されます。1 つの DiffSignalResult
オブジェクトには実数データが含まれ、もう 1 つのオブジェクトには虚数データが含まれます。DiffSignalResult
オブジェクトの Name
プロパティをチェックし、実数データと虚数データのどちらが含まれているのかを判別します。
制限
シミュレーション データ インスペクターは以下の比較をサポートしていません。
データ型
int64
またはuint64
の信号可変サイズの信号
信号の比較や実行の比較を複数実行する場合、最新の DiffSignalResult
オブジェクトのみが表示可能なプロパティをもちます。
バージョン履歴
R2011b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)