このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 以降)
例
同じ実行内に含まれる 2 つの信号の比較
シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、同じ実行内の信号を比較できます。この例では、航空機用縦方向コントローラーの入力信号と出力信号を比較します。
最初に、データを含むセッションを読み込みます。
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');
信号を比較する前に、比較に使用する許容誤差値を指定できます。比較のベースライン信号に指定された許容誤差値が使用されるため、Stick
信号に 0.1
の絶対許容誤差値を設定します。
stick.AbsTol = 0.1;
ここで、関数 Simulink.sdi.compareSignals
を使用して信号を比較します。Stick
信号はベースラインで、alpha, rad
信号はベースラインと比較される信号です。
comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
match = ComparisonSignalStatus enumeration OutOfTolerance
比較結果は許容誤差の範囲外です。関数 Simulink.sdi.view
を使用して、シミュレーション データ インスペクターを開き、比較結果を表示および解析できます。
異なる実行からの信号を比較
この例では、シミュレーション データ インスペクターの関数 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
入力引数
sigID1
— ベースライン信号の信号 ID
整数
ベースライン信号の信号 ID。整数として指定します。シミュレーション データ インスペクターは実行が作成されると各信号に信号 ID を割り当てます。次のいずれかの関数を使用して信号の信号 ID を取得します。
sigID2
— 比較する信号の信号 ID
整数
比較する信号の信号 ID。整数として指定します。シミュレーション データ インスペクターは実行が作成されると各信号に信号 ID を割り当てます。次のいずれかの関数を使用して信号の信号 ID を取得します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: diff = Simulink.sdi.compareSignals(sigID1,sigID2,DataType="MustMatch")
DataType
— 信号のデータ型に対する比較の感度
"MustMatch"
信号のデータ型に対する比較の感度。"MustMatch"
として指定します。比較される信号の数値データ型の不一致について、比較が影響を受けるようにするには、DataType="MustMatch"
を指定します。
信号のデータ型が一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは DataTypeMismatch
に設定されます。
関数 Simulink.sdi.compareSignals
は、信号データを同期して比較する前にデータ型を比較します。この名前と値の引数を指定しない場合、比較によるデータ型のチェックで string と数値データの比較の検出のみが行われます。string と数値データの比較では、結果は計算されず、結果のステータスは DataTypeMismatch
になります。異なる数値データ型をもつ信号については、比較で結果が計算されます。
最初の不一致で停止するように比較を構成すると、データ型の不一致によって比較は停止します。
Time
— 信号の時間ベクトルに対する比較の感度
"MustMatch"
信号の時間ベクトルに対する比較の感度。"MustMatch"
として指定します。比較される信号の時間ベクトルの不一致について、比較が影響を受けるようにするには、Time="MustMatch"
を指定します。この名前と値の引数を指定すると、信号データを同期して比較する前に、アルゴリズムによって時間ベクトルの比較が行われます。
時間ベクトルが一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは TimeMismatch
に設定されます。
この名前と値の引数を指定しない限り、比較では信号時間ベクトルの差異に影響を受けません。時間ベクトルの差異に影響を受けない比較では、比較の前に比較アルゴリズムによって信号の同期が行われます。同期の動作の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。
時間ベクトルが一致しなければならないよう指定し、また最初の不一致で停止するように比較を構成すると、時間ベクトルの不一致によって比較は停止します。
StartStop
— 信号の開始時間と終了時間に対する比較の感度
"MustMatch"
信号の開始時間と終了時間に対する比較の感度。"MustMatch"
として指定します。信号の開始時間と終了時間の不一致について、比較が影響を受けるようにするには、StartStop="MustMatch"
を指定します。この名前と値の引数を指定すると、信号データを同期して比較する前に、アルゴリズムによって開始時間と終了時間の比較が行われます。
開始時間と終了時間が一致しない場合、結果に対する Simulink.sdi.DiffSignalResult
オブジェクトの Status
プロパティは StartStopMismatch
に設定されます。
開始時間と終了時間が一致しなければならないよう指定し、また最初の不一致で停止するように比較を構成すると、開始時間と終了時間の不一致によって比較は停止します。
StopOnFirstMismatch
— 最初に検出された不一致で比較が停止するかどうか
"Metadata"
| "Any"
最初に検出された不一致で比較が停止するかどうか。"Metadata"
または "Any"
として指定します。停止した比較では、多次元信号の比較時にすべてのチャネルについて必ずしも結果が計算されない可能性があり、不一致となった結果をより迅速に返す可能性があります。
"Metadata"
— メタデータの不一致によって比較が停止します。メタデータの比較は信号データの比較の前に行われます。シミュレーション データ インスペクターでは、常に信号単位を比較します。最初の不一致で停止するよう比較を構成すると、単位の不一致で常に比較が停止します。追加の名前と値の引数を指定して、信号のデータ型、開始時間と終了時間、および時間ベクトルなどの追加のメタデータをチェックし、その最初の不一致で停止するよう、比較を構成できます。
"Any"
— メタデータまたは信号データの不一致によって比較が停止します。
ExpandChannels
— 多次元信号の各チャネルの比較結果を計算するかどうか
false
または 0
(既定値) | true
または 1
多次元信号の各チャネルの比較結果を計算するかどうか。logical true
(1
) または false
(0
) として指定します。
true
または1
- 非スカラーのサンプル値をもつ単一の信号として表される多次元信号をスカラーのサンプル値をもつ一連の信号に展開し、各信号の比較結果を計算します。多次元信号が非スカラーのサンプル値をもつ単一の信号として表されるシミュレーション データ インスペクターでの表現は変わりません。
false
または0
— 非スカラーのサンプル値をもつ単一の信号として表される多次元信号の比較結果を計算しません。
出力引数
diff
— 信号の比較結果
Simulink.sdi.diffSignalResult
| Simulink.sdi.diffSignalResult
オブジェクトの配列
信号の比較結果。Simulink.sdi.DiffSignalResult
オブジェクトとして返されます。複素信号の比較結果は 2 つの DiffSignalResult
オブジェクトの配列として返されます。1 つの DiffSignalResult
オブジェクトには実数データが含まれ、もう 1 つのオブジェクトには虚数データが含まれます。DiffSignalResult
オブジェクトの Name
プロパティをチェックし、実数データと虚数データのどちらが含まれているのかを判別します。
制限
シミュレーション データ インスペクターは以下の比較をサポートしていません。
R2020a より前: データ型
int64
またはuint64
の信号。可変サイズの信号。
信号の比較や実行の比較を複数実行する場合、最新の DiffSignalResult
オブジェクトのみが表示可能なプロパティをもちます。
バージョン履歴
R2011b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)