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

Simulink.sdi.compareSignals

2 つの信号からデータを比較する

説明

diff = Simulink.sdi.compareSignals(sigID1,sigID2) は信号 ID sigID1sigID2 に対応する信号を比較し、その結果を Simulink.sdi.DiffSignalResult オブジェクトに返します。比較結果を計算する方法の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。

すべて折りたたむ

この例では、slexAircraftExample モデルを使用して、制御システムの入力信号と出力信号の比較を示します。例では、ストリーミング対象の信号をマークした後に、シミュレーション実行用の実行オブジェクトを取得します。実行オブジェクトの信号 ID で、比較する信号を指定します。

% Load model slexAircraftExample and mark signals for streaming
load_system('slexAircraftExample')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

% Simulate model slexAircraftExample
out = sim('slexAircraftExample');

% Get run IDs for most recent run
allIDs = Simulink.sdi.getAllRunIDs;
runID = allIDs(end);

% Get Run object
aircraftRun = Simulink.sdi.getRun(runID);

% Get signal IDs
signalID1 = getSignalIDByIndex(aircraftRun,1);
signalID2 = getSignalIDByIndex(aircraftRun,2);

if (isValidSignalID(aircraftRun,signalID1))
    % Change signal tolerance
    signal1 = Simulink.sdi.getSignal(signalID1);
    signal1.AbsTol = 0.1;
end

if (isValidSignalID(aircraftRun,signalID1) && isValidSignalID(aircraftRun,signalID2))
    % Compare signals
    sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2);

    % Check whether signal result status
    match = sigDiff.Status
end
match = 
OutOfTolerance

この例では、シミュレーション データ インスペクターの関数 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 を割り当てます。Simulink.sdi.Run オブジェクトの信号 ID には、getSignalIDByIndex メソッドでアクセスできます。

[比較対象] 信号の信号 ID。シミュレーション データ インスペクターは、データの実行を作成すると信号と実行 ID を割り当てます。Simulink.sdi.Run オブジェクトの信号 ID には、getSignalIDByIndex メソッドでアクセスできます。

出力引数

すべて折りたたむ

信号比較の結果を含んだ Simulink.sdi.DiffSignalResult オブジェクト。

R2011b で導入