getSignalIDsByName
説明
は、指定された名前 sigIDs
= getSignalIDsByName(runObj
,name
)name
をもつ Simulink.sdi.Run
オブジェクト内の信号の 1 つ以上の信号 ID を返します。
例
信号 ID を信号名で取得
信号 ID が必要である信号の名前を指定することで、Simulink.sdi.Run
オブジェクト内の信号の信号 ID にアクセスできます。信号 ID を使用することで、関数 Simulink.sdi.compareSignals
を使用して信号を比較したり、関数 Simulink.sdi.getSignal
を使用して信号の Simulink.sdi.Signal
オブジェクトにアクセスしたり、あるいは関数 Simulink.sdi.deleteSignal
を使用してシミュレーション データ インスペクターから信号を削除することができます。
この例では、関数 getSignalIDsByName
を使って名前またはブロック パスを使用して信号にアクセスする方法、およびバス内に含まれる信号の信号 ID にアクセスする方法を示します。
シミュレーション データ インスペクターでのデータの作成
この例では、パルス カウンターのモデルを使用して、シミュレーション データ インスペクターでシミュレーション データを作成します。モデルにはカウンターの上限と下限を定義する 2 つの入力信号と、カウントするパルスをもつ 1 つの入力パルス信号があります。モデルはバスを使用して Bus Counter
サブシステムにデータを送信し、そこから Outport ブロックに送信します。モデルはパルス信号 input
と、Outport ブロックに接続されている出力信号 OUT
を記録するように設定されています。
モデルをシミュレートし、ログ データが含まれる実行をシミュレーション データ インスペクターで作成します。
out = sim('ex_pulse_counter');
信号 ID へのアクセス
シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、ログ データにアクセスします。関数 Simulink.sdi.Run.getLatest
は最後に作成された実行に対応する Simulink.sdi.Run
オブジェクトを返します。Simulink.sdi.Run
オブジェクトのログ信号の信号 ID にアクセスできます。
countRun = Simulink.sdi.Run.getLatest;
関数 getSignalIDsByName
を使用して、input
信号の信号 ID にアクセスします。
inSigID = getSignalIDsByName(countRun,'input');
より複雑なモデルでは、複数の信号に同じ名前が付けられている場合があります。この場合、関数 getSignalIDsByName
で信号名のみを使用することで、その名前を使用するモデル内のすべてのログ信号の信号 ID の配列になります。結果の重複を回避するために、プロック パスと信号名を一緒に指定できます。ブロック パスの要素を区切るにはスラッシュの代わりにドットを使用します。たとえば、input
信号の信号 ID にアクセスするには、名前を 'ex_pulse_counter.Pulse Generator.input'
と指定することもできます。
inSigID = getSignalIDsByName(countRun,'ex_pulse_counter.Pulse Generator.input');
合成信号内の信号の信号 ID へのアクセス
ex_pulse_counter
モデルに記録された出力はバス信号です。一番上のバス信号 OUT
、入れ子にされたバス LIMITBUS
、バス内の個々の信号 (output
、upper_limit
、および lower_limit
) に対応する信号 ID にアクセスできます。
一番上のバスの信号 ID にアクセスするには、信号名 OUT
を指定します。
OUTSigID = getSignalIDsByName(countRun,'OUT');
入れ子にされたバスの信号 ID にアクセスするには、バス階層内の信号へのパスを指定します。
LIMITBUSSigID = getSignalIDsByName(countRun,'OUT.LIMITBUS');
いずれかの個別の信号の信号 ID にアクセスするには、バス階層内の信号へのパスを指定します。信号名のみを使用して信号にアクセスすることはできません。Signal
オブジェクトの Name
プロパティにはバス階層が含まれます。
upper_limitSigID = getSignalIDsByName(countRun,'OUT.LIMITBUS.upper_limit');
upper_limitSig = Simulink.sdi.getSignal(upper_limitSigID);
upper_limitSig.Name
ans = 'OUT.LIMITBUS.upper_limit'
入力引数
runObj
— アクセスする必要がある ID をもつ信号が含まれる実行
Simulink.sdi.Run
オブジェクト
アクセスする必要がある信号 ID をもつ信号が含まれる実行。Simulink.sdi.Run
オブジェクトとして指定します。
name
— アクセスする必要がある ID をもつ信号の名前
文字ベクトル | string
アクセスする必要がある信号 ID をもつ信号の名前。文字ベクトルまたは string として指定します。
モデルは、複数の信号に対して同じ信号名を使用できます。この場合、特定の信号の信号 ID にアクセスするときは、信号を生成するブロックのブロック パスを name
引数に含めることができます。たとえば、name
を 'slexAircraftExample.Pilot.Stick'
として指定して、slexAircraftExample
モデルの Pilot
ブロックの出力である Stick
という名前の信号の信号 ID にアクセスします。
合成信号内の信号にアクセスするには、合成信号の階層構造を通じて信号へのパスを指定します。たとえば、name
を 'COUNTERBUS.LIMITBUS.lower_limit'
として指定して、バス COUNTERBUS
に入れ子にされているバス LIMITBUS
内の lower_limit
信号の信号 ID にアクセスします。
データ型: char
| string
出力引数
sigIDs
— 指定された名前をもつ信号の信号 ID
スカラー | 配列
指定された名前をもつ信号の 1 つ以上の信号 ID。スカラーまたは配列として返されます。
バージョン履歴
R2020a で導入
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)