主要内容

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

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

シミュレーション データ インスペクター 美国石油学会を使用して、MATLAB®コマンド ラインからシミュレーション データ インスペクターの機能を利用できます。

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

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

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

この例では、実行を作成してそこにデータを追加してから、シミュレーション データ インスペクターでデータを表示する方法を示します。

実行からデータを作成

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

时间=linspace(0,20100);正弦=正弦(2*pi/5*时间);正弦=时间序列(正弦值,时间);正名='正弦,T=5'; cos_vals=cos(2*pi/8*time);cos\u ts=时间序列(cos\u vals,time);原因名称=“余弦,T = 8”

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

関数金宝appSimulink.sdi.viewを使用して、シミュレーション データ インスペクターを開きます。

金宝appSimulink.sdi.view

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

sinusoidsRun = 金宝appSimulink.sdi.Run.create;sinusoidsRun。Name =正弦曲线的;sinusoidsRun。描述=“不同频率的正弦和余弦信号”

関数添加を使用して、ワークスペースで作成したデータを空の実行に追加します。

添加(sinusoidsRun“var”、正弦、余弦);

シミュレーション データ インスペクターでのデータのプロット

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

sine_sig=getSignalByIndex(sinusoidsRun,1);sine_sig.LineColor=[0 0 1];sine_sig.line虚线=“-”。;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,真实);plotOnSubPlot (cos_sig 2 1,真实);

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

プロットされた信号データの検査が完了したら、シミュレーション データ インスペクターを閉じて、セッションを MLDATXファイルに保存できます。

金宝appSimulink.sdi.close(“sinusoids.mldatx”

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

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

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

金宝appSimulink.sdi.load (“AircraftExample.mldatx”);

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

aircraftRun = 金宝appSimulink.sdi.Run.getLatest;

次に,関数金宝appSimulink.sdi.getSignalsByNameを使用して,コントローラーへの入力を表す坚持信号と,出力を表す阿尔法,拉德信号にアクセスできます。

stick=getSignalsByName(飞机运行,“棍子”);α= getSignalsByName (aircraftRun“α,rad”);

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

stick.Absol=0.1;

ここで,関数金宝appSimulink.sdi.compareSignalsを使用して信号を比較します。坚持信号はベースラインで,阿尔法,拉德信号はベースラインと比較される信号です。

comparisonResults = 金宝appSimulink.sdi.compareSignals (stick.ID alpha.ID);= comparisonResults相匹配。状态
匹配= OutOfTolerance

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

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

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

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

金宝appSimulink.sdi.load (“AircraftExample.mldatx”);

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

runIDs = 金宝appSimulink.sdi.getAllRunIDs;runID1 = runid (end - 1); / /结束runID2 = runIDs(结束);

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

runResult = 金宝appSimulink.sdi.compareRuns (runID1 runID2,“雷托”, 0.2,“timetol”,0.5);

返された金宝appSimulink.sdi.DiffRunResultオブジェクトの总结プロパティをチェックし、信号が許容誤差値の範囲内または範囲外のどちらであるのかを確認します。

runResult。总结
ans =带字段的结构:OutOfTolerance: 0 withtolerant: 3 Unaligned: 0 UnitsMismatch: 0 Empty: 0 Canceled: 0 EmptySynced: 0 DataTypeMismatch: 0 TimeMismatch: 0 StartStopMismatch: 0 Unsup金宝appported: 0

3.つの信号の比較結果はすべて指定したグローバル許容誤差の範囲内にあります。

関数saveResultを使用して、比較の結果を MLDATXファイルに保存できます。

saveResult (runResult“InputFilterComparison”);

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

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

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

金宝appSimulink.sdi.load (“AircraftExample.mldatx”);

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

runIDs = 金宝appSimulink.sdi.getAllRunIDs;runIDTs1 = runIDs (end-3);runIDTs2 = runIDs (end-2);

次に、許容誤差を指定しないで 2.つの実行を比較します。

noTolDiffResult = 金宝appSimulink.sdi.compareRuns (runIDTs1 runIDTs2);

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

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

各信号結果の状态をチェックし、比較結果が許容誤差の範囲内または範囲外にあるかどうかを判断します。

qResult。状态
ans = OutOfTolerance
alphaResult。状态
ans = OutOfTolerance

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

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

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

runTs1=Si金宝appmulink.sdi.getRun(runIDTs1);qSig=getSignalsByName(runTs1,“问,rad /秒”);alphaSig = getSignalsByName (runTs1,“α,rad”);

AbsTolプロパティと泰姆托尔プロパティを使用して,信号に対して0.1の絶対許容誤差と0.6の時間の許容誤差を指定します。

qSig。AbsTol = 0.1;qSig。TimeTol = 0.6;

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

alphaSig.absol=0.2;alphaSig.TimeTol=0.8;

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

tolDiffResult = 金宝appSimulink.sdi.compareRuns (runIDTs1 runIDTs2);qResult2 = getResultByIndex (tolDiffResult, 1);alphaResult2 = getResultByIndex (tolDiffResult 2);qResult2。状态
不容忍
alphaResult2。状态
不容忍

参考

関連するトピック