主要内容

プログラムによるデータの検証と比較

APIををを使用して,,,,®コマンドラインシミュレーションインスペクターのを利用でき。。

シミュレーション データ インスペクターでは実行と信号のデータを整理し、各実行と信号に固有の数値識別子を割り当てます。シミュレーション データ インスペクター API 関数は、実行または信号そのものを入力として受け入れるのではなく、実行 ID および信号 ID を使用してデータを参照します。ワークスペースの実行 ID にアクセスするには、Simulink.sdi.getAllRunIDsまたは金宝appsimulink.sdi.getRunidByIndexを使用でき。getSignalIDByIndexメソッドを使ってSimulink.sdi.Runオブジェクトにより信号信号にできます。。

Simulink.sdi.RunクラスとSimulink.sdi.Signalクラスはのを提供,および信号メタの表示と変更変更を可能可能にし金宝appsimulink.sdi.setsubplotlayoutSimulink.sdi.setRunNamingRuleSimulink.sdi.setMarkersOnなどの関数を使用してシミュレーション データ インスペクターの基本設定を変更できます。シミュレーション データ インスペクターの既定の設定に戻すには、金宝appsimulink.sdi.clearpreferencesを使用し。

実行を作成してデータを表示

この例実行をしてデータをしてから,,シミュレーションデータインスペクターででデータを表示表示するするする。

実行からデータ作成

timeseriesオブジェクトを,正弦と余弦信号データ含め含め。。各timeseriesオブジェクトに説明的な名前を付けます。

时间= linspace(0,20,100);sine_vals = sin(2*pi/5*时间);sine_ts = limeseries(sine_vals,time);sine_ts.name ='正弦,t = 5';cos_vals = cos(2*pi/8*时间);cos_ts = limeseries(cos_vals,time);cos_ts.name ='Cosine, T=8';

実行の作成とデータの追加

関数Simulink.sdi.viewを使用てシミュレーションデータを开きます。

Simulink.sdi.view

データをワークスペースからシミュレーション データ インスペクターにインポートするには、関数Simulink.sdi.Run.createを使用してSimulink.sdi.Runオブジェクトを作成ます。RunオブジェクトのNameプロパティと描述プロパティをて実行に关する情报メタデータに追加し。

sinusoidsRun = Simulink.sdi.Run.create; sinusoidsRun.Name =“如果nusoids';sinusoidsRun.Description =“带有不同频率的正弦和余弦信号”;

関数addを使用,スペースで作成たデータ空実行に追加追加ます。

add(sinusoidsRun,'vars',sine_ts,cos_ts);

シミュレーションデータでのデータプロットプロット

関数getSignalByIndexを使用て,データが含まれるSimulink.sdi.Signalオブジェクトにアクセスします。Simulink.sdi.Signalオブジェクトのプロパティを使用して、信号のライン スタイルと色を指定し、シミュレーション データ インスペクターにプロットできます。各信号のLineColorプロパティと排队プロパティを指定します。

sine_sig = getsignalbyIndex(SinusoidSrun,1);sine_sig.linecolor = [0 0 1];sine_sig.linedashed ='-.';cos_sig = sinusoidsRun.getSignalByIndex(2); cos_sig.LineColor = [0 1 0]; cos_sig.LineDashed ='--';

関数金宝appsimulink.sdi.setsubplotlayoutを使用して、シミュレーション データ インスペクターのプロット領域で21列のサブプロット レイアウトを設定します。次に、関数plotOnSubplotを使用して、上のサブプロットに正弦信号をプロットし、下のサブプロットに余弦信号をプロットします。

金宝appsimulink.sdi.setsubplotlayout(2,1); plotOnSubPlot(sine_sig,1,1,true); plotOnSubPlot(cos_sig,2,1,true);

シミュレーション データ インスペクターを閉じてデータを保存

プロットさ信号の検查がしたらシミュレーションデータインスペクターを闭じ闭じて,,セッションセッションセッションセッションセッションセッションセッションセッションセッションセッションセッションセッション

金宝appsimulink.sdi.close('sinusoids.mldatx')

同じ実行内に含まれる 2 つの信号の比較

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

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

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;

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

comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
匹配=比较枚举枚举

比较结果许容の范囲外です关数关数Simulink.sdi.viewを使用,シミュレーションインスペクターを开き比较を表示および解析できます。

グローバル許容誤差を使用して実行を比較

2 つのシミュレーション実行の比較に使用するグローバル許容誤差値を指定できます。グローバル許容誤差値は実行内のすべての信号に適用されます。この例では、実行比較のグローバル許容誤差値を指定する方法と、比較結果を解析して保存する方法を説明します。

まず、比較するデータを含むセッション ファイルを読み込みます。セッション ファイルには航空機用縦方向コントローラーの 4 つのシミュレーションに対するデータが含まれます。この例では、さまざまな入力フィルターの時定数を使用する 2 つの実行のデータを比較します。

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

比較する実行データにアクセスするには、関数Simulink.sdi.getAllRunIDsを使用して、最新の 2 つのシミュレーション実行に対応する実行 ID を取得します。

runIDs = Simulink.sdi.getAllRunIDs; runID1 = runIDs(end - 1); runID2 = runIDs(end);

関数Simulink.sdi.compareRunsを使用して実行を比較します。グローバル相対許容誤差の値0.2およびグローバル時間許容誤差の値0.5を指定します。

runResult = Simulink.sdi.compareRuns(runID1,runID2,“ reltol',0.2,'timetol',0.5);

返されたSimulink.sdi.DiffRunResultオブジェクトの概括プロパティを,が许容の内または范囲のどちらであるののかをを确认し

runResult.Summary
ans =带有字段的结构:外观: 0 WithinTolerance: 3 Unaligned: 0 UnitsMismatch: 0 Empty: 0 Canceled: 0 EmptySynced: 0 DataTypeMismatch: 0 TimeMismatch: 0 StartStopMismatch: 0 Unsupported: 0

3つの比较はすべてしグローバル许容の范囲内にあり。

関数saveResultを使用て比较の结果ををををファイルファイルにできでき。。

saveResult(runResult,'InputFilterComparison');

信号の許容誤差を使用したシミュレーション データの解析

データインスペクターし,,した比较使用使用する许容许容误差値误差値ををプログラムプログラムプログラムによってによって指定指定ますます。。このこの例例ではは,,航空航空航空航空机用机用机用机用制御制御システムシステムシステムシステムシステム各シミュレーションフィルター时定数数异なる値を使用て入出力信号信号をログログログログにに记录しし。。シミュレーションシミュレーションデータデータとと信号许容误差误差を使用使用し解析します。

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

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

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

runIDs = Simulink.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 =比较枚举枚举
alphaResult.Status
ans =比较枚举枚举

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

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

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

runts1 = 金宝appsimulink.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 =比较枚举枚举与智力
alphaResult2.Status
ANS =比较枚举枚举与智力

参考

关连するトピック