以编程方式检查数据
您可以从 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 | |
| 访问信号 ID | getAllSignalIDs | Run 对象 |
getSignalIDByIndex | Run 对象和运行中信号的索引 | |
getSignalIDsByName | Run 对象和信号名称 | |
访问 Simulink.sdi.Signal 对象 | getAllSignals | Run 对象 |
getSignalByIndex | Run 对象和运行中信号的索引 | |
getSignalsByName | Run 对象和信号名称 | |
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 函数将您在工作区中创建的数据添加到空运行中。
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 函数在仿真数据检查器绘图区域中配置 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")