主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

Simulink.sdi.Signal

信号データおよびメタデータにアクセスする

説明

Simulink.sdi.Signalオブジェクトには、シミュレーション データ インスペクターの信号のデータおよびメタデータが含まれます。Signalオブジェクト プロパティを使用して信号メタデータを検証し、時間プロットで信号を可視化し、関数金宝appsimulink.sdi.comparesignalsを使用して信号を比較します。

作成

Simulink.sdi.Signalオブジェクトは内でログししにさされるか,シミュレーションデータインスペクターインスペクターにインポートさされますますます。。Signalオブジェクトにはいくつかの方法でアクセスできます。一般に、Signalオブジェクトにアクセスするには、信号が含まれるSimulink.sdi.Runオブジェクトを最初に取得しなければなりません。

  • 関数Simulink.sdi.getSignalによって、指定した信号 ID に対応するSignalオブジェクトが返される。

  • 関数getSignalによって、指定されたRunオブジェクト内で指定された信号 ID をもつSignalオブジェクトが返される。

  • 関数getSignalByIndexによって、指定されたRunオブジェクト内で指定されたインデックスにあるSignalオブジェクトが返される。

プロパティ

すべて展开する

信号プロパティ

このプロパティは読み取り専用です。

信号をの数値。整数れ。シミュレーションデータデータインスペクターは一意一意のの数数値値値ををを各実行実行

このプロパティは読み取り専用です。

信号を含む実行の実行識別子。整数として返されます。シミュレーション データ インスペクターは一意の数値 ID を各実行と信号に割り当てます。

信号の名前。文字ベクトルまたは string として指定します。Signalオブジェクトにシミュレーションからログ記録されたデータが含まれる場合、その名前はモデル内の信号に対して指定した名前と一致します。モデルで名前が指定されない場合、その信号名は、その信号を作成したブロックへのブロック パスになります。

例:'fuel'

信号タイプ。次の値のいずれかとして指定します。

  • 'Signals'— 信号ログ データ。

  • 'Outports'— 出力ログ データ。

  • 'States'— 状態ログ データ。

  • 'Data Store Memory'— データ ストア メモリ ログ データ。

  • “参数”— ログ記録されたパラメーター データ。

  • 'Stateflow'— Stateflow®データ。

  • 'Simscape'— Simscape™ データ。

  • 'Assessments'金宝app®Test™評価データ。

  • “分析”- 実行プロファイリングデータ。

シミュレーション データのログ記録によって作成されたのではないデータのDomainプロパティは空。

信号の説明。文字ベクトルまたは string として指定します。描述プロパティをし,信号注釈を付けるか,Name外の信号成分を特定できます。Simscape データをシミュレーション データ インスペクターに記録すると、ノードごとに描述プロパティが的にされます。

このプロパティは読み取り専用です。

ディスクに保存される信号データの単位。文字ベクトルまたは字符串として指定します。モデルのシミュレーションによって生成された信号については、Signalオブジェクトの保存された単位はモデルで指定された単位を使用します、単位をもたない信号に対して表示単位を指定する場合、同じ単位を使用して保存された単位が設定されます。異なる単位を使用する別の信号と一緒に信号を解析するには、信号の表示単位を変更します。シミュレーション データ インスペクターは変換を実行し、表示単位を使用してデータをプロットします。

信号の保存された単位を変換するには、関数convertUnitsを使用し。保存された単位の変換は元に戻すことをサポートしておらず、桁落ちが発生する可能性があります。

例:'g/s'

シミュレーション データ インスペクターで信号データを表示するために使用される単位。文字ベクトルまたは string として指定します。信号の表示単位は、ディスクに保存されているデータを反映する保存済み単位とは異なる場合があります。信号の表示単位を変更して、シミュレーション データ インスペクターでデータを解析します。シミュレーション データ インスペクターでの単位の基本設定によって、ログ記録された信号データとインポートされた信号データの表示単位が変更される可能性があります。詳細については、信号の表示単位を参照してください。

例:'m/s'

このプロパティは読み取り専用です。

信号データのデータ型。文字ベクトルまたは string として返されます。

例:'double'

このプロパティは読み取り専用です。

信号データの复雑度。“真实的”または"complex"として返されます。

例:“真实的”

このプロパティは読み取り専用です。

信号のサンプル時間。文字ベクトルまたはスカラーとして返されます。'连续的'の値は、可変ステップ シミュレーションを示します。

例:'连续的'

例:'0.1'

このプロパティは読み取り専用です。

信号をしたモデル名前名前。文字ベクトルとして返されます。モデルのシミュレーションにより作成されなかったデータが含まれるSignalオブジェクトの模型プロパティは空。

例:'sldemo_fuelsys'

このプロパティは読み取り専用です。

信号を作成したブロックのブロック パス。文字配列として返されます。BlockPathプロパティはモデルの階層構造が含まれない相対パスです。モデルのシミュレーションにより作成されなかったデータが含まれるSignalオブジェクトのBlockPathプロパティは空。

例:'sldemo_fuelsys/Engine Gas Dynamics'

このプロパティは読み取り専用です。

完全な阶层を含むををブロック完全ななブロックパス。。文字ベクトルとして返されれますます。。。参照FullBlockPathは绝対含む含む含む配列。その他信号の场合,,,FullBlockPathBlockPathと同じです。モデルのシミュレーションにより作成されなかったデータが含まれるSignalオブジェクトのFullBlockPathプロパティは空。

このプロパティは読み取り専用です。

信号を作成したブロックの名前。文字ベクトルとして返されます。モデルのシミュレーションにより作成されなかったデータが含まれるSignalオブジェクトのblockNameプロパティは空。

例:“发动机气体动力学”

このプロパティは読み取り専用です。

信号を作成するブロックの信号に接続されている出力端子のインデックス。モデルのシミュレーションにより作成されなかったデータが含まれるSignalオブジェクトのPortIndexプロパティは空。

例:1

このプロパティは読み取り専用です。

信号の次元。整数または整数配列として返されます。

例:[1 2]

このプロパティは読み取り専用です。

行列内ののインデックス。整数配列として返されます。

このプロパティは読み取り専用です。

信号のサンプル数。整数として返されます。

信号の時間とデータ値。非バス信号またはバス信号のバス階層と一致する構造体のtimeseriesオブジェクトとして返されます。

このプロパティは読み取り専用です。

信号を含む高位の構造体の名前。文字ベクトルとして返されます。Rootsourceプロパティにはインポートされた信号の値のみが含まれます。

例:构造体xoutが含まれるSimulink.SimulationOutputオブジェクトsimOutをインポートする場合、Rootsource'simOut.get('xout')'です

このプロパティは読み取り専用です。

信号時間データへのパス。文字ベクトルとして返されます。TimeSourceプロパティにはインポートされた信号の値のみが含まれます。

例:构造体xoutが含まれるSimulink.SimulationOutputオブジェクトsimOutをインポートする場合、TimeSource'simOut.get('xout').time'です

このプロパティは読み取り専用です。

信号サンプルのパス文字配列としてれ。。。DataSourceプロパティにはインポートされた信号の値のみが含まれます。

例:构造体xoutが含まれるSimulink.SimulationOutputオブジェクトsimOutをインポートする場合、DataSource'simOut.get('xout').signals(1).values'です

このプロパティは読み取り専用です。

合成信号に含まれる信号。Simulink.sdi.Signalオブジェクトとして返されます。スカラー信号のChildrenプロパティは空。

可视化プロパティ

シミュレーション データ インスペクターで複素信号データの表示に使用される複素数形式。次のいずれかの値として指定します。SignalオブジェクトのComplexFormatプロパティを変更し、オブジェクトに複素信号のデータが含まれる場合にシミュレーション データ インスペクターで信号データが表示される方法を変更できます。

  • "real-imaginary"— 信号をプロットすると、信号の実数部と虚数部が一緒に表示されます。信号の虚数部は、[ラインの色]の異なる階調でプロットされます。

  • "magnitude"— 信号をプロットすると、信号の振幅が表示されます。

  • “大小相”- 信号プロットと信号の振幅が一绪にされます。

  • “阶段”- 信号プロットと信号のがされます位相は,[ラインの色]の異なる階調でプロットされます。

データ::char|string

信号がプロットされるかどうか。logical 値として指定します。Checkedfalseに設定すると、すべてのサブプロットから信号がクリアされます。Checkedtrueに设定,アクティブサブプロットでがささますます。

データ::logical

プロット内の信号の色。01の間の値をもつ13列の RGB ベクトルとして指定します。

例:[0 0.5 0.5]

データ::双倍的

シミュレーション データ インスペクターで信号をプロットする際に使用される信号線のスタイル。次のオプションのいずれかとして指定します。

  • '-'- 実线

  • '--'— 破線

  • ':'— 点線

  • '-.'— 一点鎖線

シミュレーション データ インスペクターで信号をプロットする際に使用される信号線の幅。1以上20以下の整数として指定します。

データの可視化および比較の同期ステップで使用される内挿法。次のいずれかの値として指定します。

  • 'zoh'- ゼロ次ホールド插

  • 'linear'— 線形内挿

  • 'none'— 内挿なし

内插オプション详细については,シミュレーション データ インスペクターでデータを比較する方法を参照してください。

比較プロパティ

信号比較で使用する絶対許容誤差。正の値のスカラーとして指定します。

シミュレーション データ インスペクターは、OverrideGlobalTolプロパティが1またはtrueに设定て场合に,ベースの信号で指定指定されれたた许容许容误差误差使用使用ますますます。。。シミュレーションシミュレーションシミュレーションシミュレーション データ インスペクターでデータを比較する方法を参照してください。

例:0.1

データ::双倍的

信号比較で使用する相対許容誤差。正の値のスカラーとして指定します。相対許容誤差は非整数乗数として表されます。たとえば、0.1は 10 パーセントの許容誤差を指定します。

シミュレーション データ インスペクターは、OverrideGlobalTolプロパティが1またはtrueに设定て场合に,ベースの信号で指定指定されれたた许容许容误差误差使用使用ますますます。。。シミュレーションシミュレーションシミュレーションシミュレーション データ インスペクターでデータを比較する方法を参照してください。

例:0.05

データ::双倍的

信号比較に使用される信号の時間の許容誤差。正の値のスカラーとして指定します。時間の許容誤差 (秒単位) を指定します。

シミュレーション データ インスペクターは、OverrideGlobalTolプロパティが1またはtrueに设定て场合に,ベースの信号で指定指定されれたた许容许容误差误差使用使用ますますます。。。シミュレーションシミュレーションシミュレーションシミュレーション データ インスペクターでデータを比較する方法を参照してください。

例:0.1

データ::双倍的

グローバル許容誤差値の代わりに比較で信号許容誤差を使用するかどうか。logical 値として指定します。OverrideGlobalTolプロパティを1またはtrueに设定し,Signalオブジェクト プロパティで定義した許容誤差値を使用します。プロパティを0またはfalseに設定してグローバル許容誤差値を使用します。

シミュレーション データ インスペクターにおける許容誤差の詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。

データ::logical

比較で信号の同期に使用されるメソッド。'union'または'路口'として指定します。同期オプションの詳細については、シミュレーション データ インスペクターでデータを比較する方法を参照してください。

オブジェクト関数

convertUnits Simulink.sdi.Signalオブジェクトの単位変换
export Simulink.sdi.Signalオブジェクトをワークスペースまたはファイルにエクスポート
getastall Simulink.sdi.Signal高高的时间表を
plotOnSubPlot シミュレーション データ インスペクターのサブプロットでSimulink.sdi.Signalオブジェクトをプロット

すべて折りたたむ

シミュレーション データ インスペクターを使用して、実行した比較で使用する信号の許容誤差値をプログラムによって指定できます。この例では、航空機用縦方向飛行制御システムのモデルをシミュレーションして収集したデータを比較します。各シミュレーションは入力フィルターの時定数に異なる値を使用して、入出力信号をログに記録します。シミュレーション データ インスペクターと信号許容誤差を使用して結果を比較し、時定数の変更の影響を解析します。

まず、シミュレーション データを含むセッション ファイルを読み込みます。

Simulink.sdi.load('AircraftExample.mldatx');

セッション ファイルには 4 つの実行が含まれます。この例では、ファイル内の最初の 2 つの実行からデータを比較します。ファイルから読み込まれた最初の 2 つの実行について、Simulink.sdi.Runオブジェクトにアクセスします。

runids = 金宝appsimulink.sdi.getAllrunids;runidts1 = runids(end-3);runidts2 = runids(end-2);

次に许容を指定しでででつつ実行を比较し。。

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

関数getResultByIndexを使用してq信号とalpha信号の比較結果にアクセスします。

qResult = getResultByIndex(noTolDiffResult,1); alphaResult = getResultByIndex(noTolDiffResult,2);

各信号结果のStatusをチェック比较が许容の内または外にあるかどうどうかかを判断判断

qResult.Status
ans = OutOfTolerance
alphaResult.Status
ans = OutOfTolerance

比較では、すべての許容誤差に0の値使用するため,OutOfToleranceの結果は信号が同一でないことを意味します。

信号の差値指定して时定の影响を解析解析できます。比较比较対象対象対応対応対応Simulink.sdi.Signalオブジェクトのプロパティを設定し、許容誤差を指定します。比較ではベースライン信号に対して指定された許容誤差が使用されます。この例では、時間の許容誤差と絶対許容誤差を指定します。

許容誤差を指定するには、最初にベースライン実行からSignalオブジェクトにアクセスします。

runTs1 = Simulink.sdi.getRun(runIDTs1); qSig = getSignalsByName(runTs1,'q, rad/sec');alphasig = getsignalsbyname(runts1,'alpha, rad');

Abstolプロパティと时间表プロパティを使用して、q信号に対して0.1の絶対許容誤差と0.6の時間の許容誤差を指定します。

qSig.AbsTol = 0.1; qSig.TimeTol = 0.6;

alpha信号に対して、0.2の絶対許容誤差と0.8の時間の許容誤差を指定します。

Alphasig.Abstol = 0.2;alphasig.timetol = 0.8;

結果を再度比較します。比較の結果にアクセスし、各信号のStatusプロパティをチェックします。

tolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); qResult2 = getResultByIndex(tolDiffResult,1); alphaResult2 = getResultByIndex(tolDiffResult,2); qResult2.Status
ans = withIntolance
alpharesult2.status
ans = withIntolance

この例では、Simulink.sdi.Signalオブジェクトを取得し、シミュレーション データ インスペクターのプログラムによるインターフェイスを使用してそのプロパティを変更する方法を示します。

シミュレーションデータでのデータ作成作成

データを記録するモデルをシミュレーションすると、ログ データが含まれるようにシミュレーション データ インスペクターで実行が作成されます。データをインポートすることによりシミュレーション データ インスペクターで実行を作成することもできます。この例ではSlexaircraftExampleモデルをシミュレーションして、そのデータをDataset形式でログに記録します。

simOut = sim(“ slexaircraftExample”,'SaveFormat',“数据集”);

Simulink.sdi.Signalオブジェクトの取得

プログラミングによるシミュレーションではワークスペース変数simOutにログデータが返されます。その変数でログデータにアクセスできます。ただし,シミュレーションデータ インスペクターのプログラムによるインターフェイスを使用するには、Simulink.sdi.RunオブジェクトとSimulink.sdi.Signalオブジェクトのデータアクセスしばなりません。

最初にSimulink.sdi.getCurrentSimulationRunを使用し,SlexaircraftExampleモデルをシミュレーションしたときに作成されたRunオブジェクトを取得します。

aircraftRun = Simulink.sdi.getCurrentSimulationRun(“ slexaircraftExample”);

関数getAllSignalsを使用して、実行のすべての信号に対するSignalオブジェクトにできます。たたSignalオブジェクトの配列から、最初の信号を選択します。

signals = getAllSignals(aircraftRun); sig = signals(1);

信号プロパティの変更

Simulink.sdi.Signalオブジェクトには、信号の比較と可視化用にオプションを指定するプロパティがあります。信号のライン スタイルと色を指定します。次に、金宝appsimulink.sdi.setsubplotlayoutを使用シミュレーションデータを构成し信号サブプロットを表示し,关数plotOnSubPlotを使用て信号プロットします。

sig.linecolor = [1 0.4 0.6];sig.linedashed ='-';金宝appsimulink.sdi.setsubplotlayout(1,1)plotonsubplot(sig,1,1,true)

関数金宝appsimulink.sdi.viewを使用してシミュレーション データ インスペクターを開き、プロットされた信号を表示します。

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、同じ実行内の信号を比較できます。この例では、航空機用縦方向コントローラーの入力信号と出力信号を比較します。

最初に、データを含むセッションを読み込みます。

Simulink.sdi.load('AircraftExample.mldatx');

関数Simulink.sdi.Run.getLatestを使用してデータ内の最新の実行にアクセスします。

aircraftRun = Simulink.sdi.Run.getLatest;

次に、関数Simulink.sdi.getSignalsByNameを使用して、コントローラーへの入力を表すStick信号と、出力を表す阿尔法,rad信号にアクセスます。

stick = getSignalsByName(aircraftRun,'戳');alpha = getSignalsByName(aircraftRun,'alpha, rad');

信号を比較する前に、比較に使用する許容誤差値を指定できます。比較のベースライン信号に指定された許容誤差値が使用されるため、Stick信号に0.1の絶対許容誤差値を設定します。

Stick.Abstol = 0.1;

ここで、関数金宝appsimulink.sdi.comparesignalsを使用して信号を比較します。Stick信号はベースラインで、阿尔法,rad信号はベースラインと比較される信号です。

comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
match = OutOfTolerance

比較結果は許容誤差の範囲外です。関数金宝appsimulink.sdi.viewを使用,シミュレーションインスペクターを开き比较を表示および解析できます。

この例では、信号を記録して作成されたシミュレーション データ インスペクター実行のSimulink.sdi.Runオブジェクトにアクセスする方法を示します。Simulink.sdi.Runオブジェクトから、ログに記録された信号データとメタデータが含まれるSimulink.sdi.Signalオブジェクトを取得ます。Signalオブジェクトと関数plotOnSubPlotを使用して、データをシミュレーション データ インスペクターにプロットできます。

シミュレーション実行の作成およびRunオブジェクトへのアクセス

ex_vdpモデルは 2 つの信号を記録します。ログ データが含まれるシミュレーション実行を作成するには、モデルのシミュレーションを実行します。

sim('ex_vdp');

シミュレーション データ インスペクターは、シミュレーションで作成された各実行に一意の数値実行 ID を割り当てるか、データをインポートするか、セッションを開くことによって実行を追跡します。直前に実行したシミュレーションの実行オブジェクトにアクセスするには、関数Simulink.sdi.getAllRunIDsを使用して、返されるベクトルで最後の実行 ID を取ります。

runids = 金宝appsimulink.sdi.getAllrunids;runID = runIDs(end);

実行実行実行ををすると关数关数关数Simulink.sdi.getRunを使用て実行にするするSimulink.sdi.Runオブジェクトを取得ます。Runオブジェクトを使用して、実行内の信号の数など、実行に関連付けられているメタデータをチェックできます。

vdprun = 金宝appsimulink.sdi.getrun(runid);vdprun.signalcount
ans =INT322

Signalオブジェクトを使用したデータのプロット

関数getSignalByIndexを使用して、RunオブジェクトfuelRunから信号にアクセスします。

signal1 = getSignalByIndex(vdprun,1);signal2 = getsignalbyIndex(vdprun,2);

関数金宝appsimulink.sdi.setsubplotlayoutを使用しててて列列レイアウトをし。。。

金宝appsimulink.sdi.setsubplotlayout(2,1)

データをプロットする前に、既にプロットされている任意のデータを関数Simulink.sdi.clearAllSubPlotsを使用て消去し。。

Simulink.sdi.clearAllSubPlots

1つごとつのをプロットます最初のサブプロットで信号ををプロットするためためののの检查プロパティを設定できます。最初のサブプロット以外のサブプロットで信号をプロットするには、関数plotOnSubPlotを使用し。

signal1.Checked = true; plotOnSubPlot(signal2,2,1,true);

プロットされたデータの表示

直前に作成したプロットを表示するには、関数金宝appsimulink.sdi.viewを使用してシミュレーション データ インスペクターを開きます。

R2012b で導入