Main Content

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

getSignalsByName

信号名を使用してSimulink.sdi.Runオブジェクトの信号にアクセス

説明

sigs= getSignalsByName(runObj,name)は、nameで指定された名前をもつ 1 つ以上のSimulink.sdi.Signalオブジェクトを返します。

すべて折りたたむ

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、ログ データまたはインポートされたデータに対応するSimulink.sdi.Signalオブジェクトにアクセスできます。関数getSignalsByNameを使用して、Simulink.sdi.Runオブジェクトから取得する信号の名前を指定できます。個々の信号および合成信号のデータにアクセスできます。

シミュレーション データ インスペクターでのデータの作成

この例では、パルス カウンターのモデルを使用して、シミュレーション データ インスペクターでシミュレーション データを作成します。モデルにはカウンターの上限と下限を定義する 2 つの入力信号と、カウントするパルスをもつ 1 つの入力パルス信号があります。モデルはバスを使用してBus Counterサブシステムにデータを送信し、そこから Outport ブロックに送信します。モデルはパルス信号inputと、Outport ブロックに接続されている出力を記録するように設定されています。

モデルをシミュレートし、ログ データが含まれる実行をシミュレーション データ インスペクターで作成します。

out = sim('ex_pulse_counter');

シミュレーション データ インスペクターの信号へのアクセス

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

countRun = Simulink.sdi.Run.getLatest;

関数getSignalsByNameを使用して、input信号にアクセスします。返されたSimulink.sdi.SignalオブジェクトのNameプロパティをチェックします。

inSig = getSignalsByName(countRun,“输入”); inSig.Name
ans = 'input'

input信号は合成信号ではないため、SignalオブジェクトのChildrenプロパティは空になります。

inChildren = inSig.Children; size(inChildren)
ans =1×20 0

ここで、関数getSignalsByNameを使用して出力信号OUTにアクセスします。OUTは、カウンターからの出力信号output、カウンターの限度信号upper_limitlower_limitLIMITBUSという名前の入れ子にされたバスに含まれるバス信号です。

outSig = getSignalsByName(countRun,'OUT');

返されるSignalオブジェクトのNameプロパティとChildrenプロパティをチェックします。Childrenプロパティ値にはOUTバスの階層の次のレベルにある信号に対応する 2 つのSignalオブジェクトが含まれます。

outSig.Name
ans = 'OUT'
outChildren = outSig.Children; size(outChildren)
ans =1×21 2

SignalオブジェクトoutSigは合成信号に対応するため、Checkedプロパティまたは関数plotOnSubPlotを使用してシミュレーション データ インスペクターに信号データをプロットすることはできません。合成信号のデータをプロットするには、個々のSignalオブジェクトにアクセスします。

合成信号内の信号へのアクセス

対応するSignalオブジェクトのChildrenプロパティへのインデックス付けを行うことで、OUTバスとLIMITBUS内の信号にアクセスできます。たとえば、OUTバスのSignalオブジェクトのoutput信号にアクセスできます。

outChildren = outSig.Children; outputSig = outChildren(1); outputSig.Name
ans = ' OUT.output '

バス階層を通じて信号へのパスを指定することで、output信号のSignalオブジェクトを取得することもできます。

outputSig = getSignalsByName(countRun,'OUT.output'); outputSig.Name
ans = ' OUT.output '

upper_limit信号にアクセスするには、バス内の信号への絶対パスを指定します。

upper_limitSig = getSignalsByName(countRun,'OUT.LIMITBUS.upper_limit'); upper_limitSig.Name
ans = 'OUT.LIMITBUS.upper_limit'

入力引数

すべて折りたたむ

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

アクセスする必要がある信号の名前。文字ベクトルまたは string として指定します。

モデルは、複数の信号に対して同じ信号名を使用できます。この場合、特定の信号にアクセスするときは、信号を生成するブロックのブロック パスをname引数に含めることができます。たとえば、name'slexAircraftExample.Pilot.Stick'として指定して、slexAircraftExampleモデルの飞行员ブロックの出力であるStickという名前の信号にアクセスします。

合成信号内の信号にアクセスするには、合成信号の階層構造を通じて信号へのパスを指定します。たとえば、name'COUNTERBUS.LIMITBUS.lower_limit'として指定して、バスCOUNTERBUSに入れ子にされているバスLIMITBUS内のlower_limit信号にアクセスします。

データ型:char|string

出力引数

すべて折りたたむ

指定された名前に一致する 1 つ以上の信号。Simulink.sdi.SignalオブジェクトまたはSimulink.sdi.Signalオブジェクトの配列として返されます。

R2020a で導入