主要内容

以编程方式检查数据

您可以从 MATLAB® 命令行以编程方式利用仿真数据检查器的功能。

仿真数据检查器对运行和信号中的数据进行组织,对每个运行和信号赋予一个唯一数值标识符。Simulink.sdi.RunSimulink.sdi.Signal 对象允许您访问数据以及查看和修改运行和信号元数据。当您以编程方式与仿真数据检查器交互时,一些函数需要 SignalRun 对象作为输入,而其他函数则使用信号或运行 ID。下表列出了一些访问这些对象和 ID 的方法。

操作函数所需输入
访问运行 ID Simulink.sdi.getAllRunIDs
Simulink.sdi.getRunIDByIndex仿真数据检查器存储库中运行的索引
访问 Simulink.sdi.Run 对象Simulink.sdi.Run.getLatest
Simulink.sdi.getCurrentSimulationRun模型名称
Simulink.sdi.getRun运行 ID
访问信号 IDgetAllSignalIDsRun 对象
getSignalIDByIndexRun 对象和运行中信号的索引
getSignalIDsByNameRun 对象和信号名称
访问 Simulink.sdi.Signal 对象getAllSignalsRun 对象
getSignalByIndexRun 对象和运行中信号的索引
getSignalsByNameRun 对象和信号名称
Simulink.sdi.getSignal信号 ID

您可以使用类似 Simulink.sdi.setSubPlotLayoutSimulink.sdi.setRunNamingRuleSimulink.sdi.setVisualization 的函数来修改仿真数据检查器预设项。要还原仿真数据检查器默认设置,请使用 Simulink.sdi.clearPreferences

创建运行并查看数据

创建一次运行,向其中添加数据,然后在仿真数据检查器中查看数据。

为运行创建数据

创建两个 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 对象的 NameDescription 属性将有关运行的信息添加到其元数据中。

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 对象属性来指定信号的线型和颜色,并将信号绘制在仿真数据检查器中。为每个信号指定 LineColorLineDashed 属性。

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 函数在仿真数据检查器绘图区域中配置 2×1 子图布局。然后使用 plotOnSubplot 函数在顶部子图上绘制正弦信号,在下部子图上绘制余弦信号。

Simulink.sdi.setSubPlotLayout(2,1);

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

使用游标检查数据

要访问特定时间点的信号值,您可以向绘图添加游标。例如,Sine 信号似乎在约 6 秒处有局部最大值。向绘图添加一个游标,并观察在 6 秒处的信号值。

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

在一个绘图上放置两个游标,以测量两个点之间的时间差或在定义的区间内提取描述性统计量。

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")

另请参阅

工具

对象

函数

另请参阅

主题