メインコンテンツ

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

MATLAB® コマンド ラインからプログラムでシミュレーション データ インスペクターの機能を利用できます。

シミュレーション データ インスペクターでは実行と信号のデータを整理し、それぞれの実行と信号に固有の数値識別子を割り当てます。Simulink.sdi.Run オブジェクトと Simulink.sdi.Signal オブジェクトでデータにアクセスし、実行と信号のメタデータを表示および変更できます。シミュレーション データ インスペクターをプログラムで操作する場合、入力として Signal オブジェクトまたは Run オブジェクトを必要とする関数もあれば、信号 ID または実行 ID を使用する関数もあります。次の表に、このようなオブジェクトと ID にアクセスする方法を示します。

アクション関数必要な入力
実行 ID へのアクセス Simulink.sdi.getAllRunIDsなし
Simulink.sdi.getRunIDByIndexシミュレーション データ インスペクター リポジトリ内の実行のインデックス
Simulink.sdi.Run オブジェクトへのアクセスSimulink.sdi.Run.getLatestなし
Simulink.sdi.getCurrentSimulationRunモデル名
Simulink.sdi.getRun実行 ID
信号 ID へのアクセスgetAllSignalIDsRun オブジェクト
getSignalIDByIndexRun オブジェクトおよび実行内の信号のインデックス
getSignalIDsByNameRun オブジェクトおよび信号名
Simulink.sdi.Signal オブジェクトへのアクセスgetAllSignalsRun オブジェクト
getSignalByIndexRun オブジェクトおよび実行内の信号のインデックス
getSignalsByNameRun オブジェクトおよび信号名
Simulink.sdi.getSignal信号 ID

Simulink.sdi.setSubPlotLayoutSimulink.sdi.setRunNamingRuleSimulink.sdi.setVisualization などの関数を使用してシミュレーション データ インスペクターの基本設定を変更できます。シミュレーション データ インスペクターの既定の設定に戻すには、Simulink.sdi.clearPreferences を使用します。

実行の作成とデータの表示

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

実行のデータの作成

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

time = linspace(0,20,101);

sine_vals = sin(2*pi/5*time);
sine_ts = timeseries(sine_vals,time);
sine_ts.Name = "Sine, T=5";

cos_vals = cos(2*pi/8*time);
cos_ts = timeseries(cos_vals,time);
cos_ts.Name = "Cosine, T=8";

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

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

Simulink.sdi.view

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

sinusoidsRun = Simulink.sdi.Run.create;
sinusoidsRun.Name = "Sinusoids";
sinusoidsRun.Description = "Sine and cosine signals with different frequencies";

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

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

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

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

sine_sig = getSignalByIndex(sinusoidsRun,1);
sine_sig.LineColor = [0 0 1];
sine_sig.LineDashed = "-.";

cos_sig = sinusoidsRun.getSignalByIndex(2);
cos_sig.LineColor = [1 0 0];
cos_sig.LineDashed = "--";

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

Simulink.sdi.setSubPlotLayout(2,1);

plotOnSubPlot(sine_sig,1,1,true);
plotOnSubPlot(cos_sig,2,1,true);

カーソルを使用したデータの検査

特定の時間における信号の値にアクセスするには、カーソルをプロットに追加します。たとえば、Sine 信号は、約 6 秒の時点で局所的最大値をもつように表示されます。1 つのカーソルをプロットに追加して、6 秒時点での信号値を確認します。

Simulink.sdi.setNumCursors(1)
Simulink.sdi.setCursorPositions("left",6)

2 つのカーソルをプロット上に配置して、2 点間での時間差を測定するか、定義した区間内の記述統計を抽出します。

Simulink.sdi.setNumCursors(2)
Simulink.sdi.setCursorPositions("left",5,"right",7)

max関数を使用して、カーソル間の Sine 信号の局所的な最大サンプル値を決定します。

[t1,t2] = Simulink.sdi.getCursorPositions;
localMax = max(sine_sig,t1,t2)
localMax = 
0.9980

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

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

Simulink.sdi.close("sinusoids.mldatx")

参考

ツール

オブジェクト

関数

参考

トピック