Main Content

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

getSignalIDByIndex

Simulink.sdi.Run オブジェクト内の指定されたインデックスにある信号の信号 ID を取得

説明

sigID = getSignalIDByIndex(runObj,idx)Simulink.sdi.Run オブジェクト runObj の指定されたインデックス idx にある信号の信号 ID sigID を返します。

ヒント

信号 ID を使用して、信号データとメタデータを含む Simulink.sdi.Signal オブジェクトを取得するか、関数 Simulink.sdi.compareSignals を使用して信号比較を実行できます。

すべて折りたたむ

この例では、slexAircraftExample モデルを使用して、制御システムの入力信号と出力信号の比較方法を示します。

モデルの設定とシミュレーション

slexAircraftExample モデルはデータを記録しません。モデルを読み込み、入力信号と出力信号をログ記録するようマークします。

load_system('slexAircraftExample')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

モデルをシミュレートします。ログ信号のデータはシミュレーション データ インスペクターとワークスペースに記録されます。

out = sim('slexAircraftExample');

シミュレーション データへのアクセス

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、データにアクセスします。関数 Simulink.sdi.Run.getLatest は、シミュレーション データ インスペクター リポジトリ内で最後に作成された実行を返します。関数 getSignalIDByIndex を使用して、ログ信号の信号 ID にアクセスします。

aircraftRun = Simulink.sdi.Run.getLatest;

signalID1 = getSignalIDByIndex(aircraftRun,1);
signalID2 = getSignalIDByIndex(aircraftRun,2);

許容誤差値の指定

比較に使用する許容誤差値を、記録された Simulink.sdi.Signal オブジェクトのプロパティとして指定できます。関数 Simulink.sdi.getSignal を使用し、信号 ID を使用して Signal オブジェクトにアクセスします。

signal1 = Simulink.sdi.getSignal(signalID1);
signal1.AbsTol = 0.1;

信号の比較

関数 Simulink.sdi.compareSignals を使用して、入力信号と出力信号を比較します。この例では、関数 isValidSignalID を使用して、両方の信号 ID が関数 Simulink.sdi.compareSignals の呼び出し前に依然として有効であることを検証します。信号がシミュレーション データ インスペクターから削除されると、信号 ID は無効になります。比較後、Simulink.sdi.DiffSignalResult オブジェクトのステータスをチェックします。

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

    match = sigDiff.Status
end
match = 
OutOfTolerance

比較結果は許容誤差の範囲外です。関数 Simulink.sdi.view を使用して、比較結果を検証および解析できます。

入力引数

すべて折りたたむ

目的の信号が含まれる実行。Simulink.sdi.Run オブジェクトとして指定します。

実行内の信号のインデックス。整数として指定します。

出力引数

すべて折りたたむ

一意の数値信号識別子。整数として返されます。

R2012b で導入