主要内容

以编程方式检查数据

R2026b

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

仿真数据检查器对运行和信号中的数据进行组织,对每个运行和信号赋予一个唯一数值标识符。Simulink.sdi.Run 和 Simulink.sdi.Signal 对象允许您访问数据以及查看和修改运行和信号元数据。当您以编程方式与仿真数据检查器交互时,一些函数需要 Signal 或 Run 对象作为输入,而其他函数则使用信号或运行 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.setSubPlotLayout、Simulink.sdi.setRunNamingRule 和 Simulink.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 对象的 Name 和 Description 属性添加元数据信息。

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

将您在工作区中创建的数据添加到空运行中。

add(sinusoidsRun,"vars",sine_ts,cos_ts);
 0.091530s wall, 0.156250s user + 0.031250s system = 0.187500s CPU (204.9%)

在仿真数据检查器中绘制数据

要访问每个信号对应的 Simulink.sdi.Signal 对象,请使用 getSignalByIndex。您可以使用 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 = "--";

要在仿真数据检查器绘图区域的活动选项卡中配置一个 2×1 子图布局,请使用 Simulink.sdi.setSubPlotLayout。要在顶部子图上绘制正弦信号,在下部子图上绘制余弦信号,请使用 plotOnSubPlot。

Simulink.sdi.setSubPlotLayout(2,1);

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

A 2-by-1 subplot layout for Tab1 in the Simulation Data Inspector. The sine signal is plotted in the upper subplot and the cosine signal is plotted in the lower subplot.

使用游标检查数据

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

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

The Simulation Data Inspector with a cursor positioned at 6 seconds in Tab1. The cursor is applied to both subplots.

要测量两个点之间的时间差或在定义的区间内提取描述性统计量,请添加两个游标。

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

The Simulation Data Inspector with two cursors positioned at 5 seconds and 7 seconds in Tab1.

使用 max 函数确定游标之间 Sine 信号中的局部最大采样值。

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

关闭仿真数据检查器并保存数据

检查完绘制的信号数据后,可以关闭仿真数据检查器并将会话保存到 MLDATX 文件中。

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

另请参阅

工具

对象

函数

另请参阅

主题