Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

getResultByIndex

信号の比較結果を返す

説明

diffSig = getResultByIndex(diffRes,index) は、Simulink.sdi.DiffRunResult オブジェクト diffRes 内の指定されたインデックスで、Simulink.sdi.DiffSignalResult オブジェクト diffSig を返します。

すべて折りたたむ

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、比較で使用するための信号の許容誤差値を指定できます。この例では slexAircraftExample モデルとシミュレーション データ インスペクターを使用し、制御入力の後にローパス フィルターの時定数を変更することによる影響を評価します。

モデルの設定

モデルを読み込んで、関心のある信号をログ記録用にマークします。この例では、q 信号と alpha 信号のデータを記録します。

load_system('slexAircraftExample')

Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

シミュレーションの実行

異なるローパス フィルターの時定数でシミュレーションを実行し、比較する結果を生成します。slexAircraftExample モデルは、そのモデルに関連付けられている変数をモデル ワークスペースに格納します。時定数値を変更するには、モデル ワークスペースにアクセスして関数 assignin を使用します。

out1 = sim('slexAircraftExample');

modelWorkspace = get_param('slexAircraftExample','modelworkspace');
assignin(modelWorkspace,'Ts',1)

out2 = sim('slexAircraftExample');

シミュレーション結果へのアクセスと比較

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、シミュレーション結果にアクセスします。各シミュレーションによって、一意の実行 ID をもつ実行がシミュレーション データ インスペクターに作成されます。実行 ID を使用して、シミュレーション結果を比較します。

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

関数 Simulink.sdi.compareRuns を使用して、シミュレーションで得たデータを比較します。次に、信号結果の Status プロパティを検査し、信号が既定の許容誤差 0 の範囲内にあるかどうかを確認します。

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

sig1Result1 = getResultByIndex(diffRun1,1);
sig2Result1 = getResultByIndex(diffRun1,2);

sig1Result1.Status
ans = 
OutOfTolerance
sig2Result1.Status
ans = 
OutOfTolerance

信号の許容誤差を使用して実行を比較

既定では、信号はすべての許容誤差値に 0 を使用するため、信号が同一でない場合は、比較によって許容誤差外の結果が返されます。時定数の変更の影響をさらに解析するために、信号の許容誤差値を指定します。比較する実行内の Simulink.sdi.Signal オブジェクトのプロパティを使用して、プログラムによる比較の許容誤差を指定できます。比較ではベースラインの Signal オブジェクトに対して指定された許容誤差が使用されます。この例では、時間の許容誤差と絶対許容誤差の組み合わせを指定します。

許容誤差を指定するには、まず比較する必要がある実行内の各信号に対応する Simulink.sdi.Signal オブジェクトにアクセスします。

run1 = Simulink.sdi.getRun(runIDTs1);
sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run1,2);

sig1 = Simulink.sdi.getSignal(sigID1);
sig2 = Simulink.sdi.getSignal(sigID2);

Name プロパティをチェックして、各 Signal オブジェクトを特定します。

sig1.Name
ans = 
'q, rad/sec'
sig2.Name
ans = 
'alpha, rad'

ベースラインの実行で q 信号オブジェクトの AbsTol プロパティと TimeTol プロパティを使用する q 信号に対して、0.1 の絶対許容誤差と 0.6 の時間の許容誤差を指定します。

sig1.AbsTol = 0.1;
sig1.TimeTol = 0.6;

ベースラインの実行で alpha 信号オブジェクトの AbsTol プロパティと TimeTol プロパティを使用する alpha 信号に対して、0.2 の絶対許容誤差と 0.8 の時間の許容誤差を指定します。

sig2.AbsTol = 0.2;
sig2.TimeTol = 0.8;

実行を再度比較し、結果にアクセスします。

diffRun2 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);
sig1Result2 = getResultByIndex(diffRun2,1);
sig2Result2 = getResultByIndex(diffRun2,2);

比較結果が指定された許容誤差の範囲内にあるかどうかを判断するには、各信号の Status プロパティをチェックします。

sig1Result2.Status
ans = 
WithinTolerance
sig2Result2.Status
ans = 
WithinTolerance

入力引数

すべて折りたたむ

アクセスする信号の結果を含む実行の比較結果。Simulink.sdi.DiffRunResult オブジェクトとして指定します。

Simulink.sdi.DiffRunResult オブジェクト内の信号のインデックス。整数として指定します。

例: 2

出力引数

すべて折りたたむ

指定されたインデックスでの信号の比較結果。Simulink.sdi.DiffSignalResult オブジェクトとして返されます。

R2012b で導入