プログラムによるデータの検証と比較
APIををを使用して,,,,®コマンドラインシミュレーションインスペクターのを利用でき。。
シミュレーション データ インスペクターでは実行と信号のデータを整理し、各実行と信号に固有の数値識別子を割り当てます。シミュレーション データ インスペクター API 関数は、実行または信号そのものを入力として受け入れるのではなく、実行 ID および信号 ID を使用してデータを参照します。ワークスペースの実行 ID にアクセスするには、Simulink.sdi.getAllRunIDs
または金宝appsimulink.sdi.getRunidByIndex
を使用でき。getSignalIDByIndex
メソッドを使ってSimulink.sdi.Run
オブジェクトにより信号信号にできます。。
Simulink.sdi.Run
クラスとSimulink.sdi.Signal
クラスはのを提供,および信号メタの表示と変更変更を可能可能にし金宝appsimulink.sdi.setsubplotlayout
、Simulink.sdi.setRunNamingRule
、Simulink.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
を使用して、シミュレーション データ インスペクターのプロット領域で2
行1
列のサブプロット レイアウトを設定します。次に、関数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 =比较枚举枚举与智力