主要内容

仿真数据检查器

R2026b

检查并比较数据和仿真结果,以验证和迭代模型设计

描述

仿真数据检查器能够可视化并比较多种类型的数据。

使用仿真数据检查器,您可以在工作流的多个阶段检查和比较时间序列数据。您也可以使用选项卡 (自 R2026b 起)来组织不同可视化和布局。以下示例工作流展示了仿真数据检查器如何支持设计周期的所有阶段:

  1. 在仿真数据检查器中查看仿真数据 或 将数据从工作区或文件导入仿真数据检查器中

    在配置为将数据记录到仿真数据检查器的模型中运行仿真,或从工作区或文件导入数据。在以迭代方式修改模型图、参数值或模型配置时,您可以使用多个选项卡查看和验证模型输入数据或检查记录的仿真数据。有关记录仿真数据的详细信息,请参阅保存仿真数据。

  2. Inspect Simulation Data

    使用多个选项卡来组织仿真数据的不同视图。在每个选项卡中,在多个子图上绘制信号,在指定的绘图坐标区上放大和缩小,并使用数据游标来了解详情和计算数据。您可以从多种可视化效果中进行选择,如时间图、数组图、地图、迷你图和 XY 绘图。有关有效呈现数据的详细信息,请参阅Create Plots Using Simulation Data Inspector。

  3. Compare Simulation Data

    比较单个信号或仿真运行,并使用相对、绝对和时间容差分析比较结果。仿真数据检查器中的比较工具支持迭代设计,并允许您突出显示不符合容差要求的信号。有关比较操作的详细信息,请参阅 仿真数据检查器如何比较数据。

  4. 保存和共享仿真数据检查器数据和视图

    通过保存仿真数据检查器数据和视图与他人共享您的发现。

您也可以从命令行使用仿真数据检查器。有关详细信息,请参阅以编程方式检查数据和以编程方式比较数据。

The Inspect pane of the Simulation Data Inspector shows three subplots on a tab. The subplots show time plots of data gathered from three runs of the model sldemo_autotrans. The first subplot shows the EngineRPM signals from all three runs. The second subplot shows the ShiftLogic signals from all three runs. The third subplot shows the VehicleSpeed signal from all three runs.

打开 仿真数据检查器

  • Simulink® 工具条:在仿真选项卡的查看结果下,点击数据检查器。

  • 从模型:点击信号上的流式标记以打开仿真数据检查器并绘制信号。

  • MATLAB® 命令提示符:

示例

全部展开

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

为运行创建数据

创建两个 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")

您可以使用仿真数据检查器编程接口修改多次运行中的同一信号的参数。此示例在数据的所有四次运行中为信号增加 0.1 的绝对容差。

首先,清空工作区,并加载包含这些数据的仿真数据检查器会话。该会话包括从飞机纵向控制器的 Simulink® 模型的四次仿真中记录的数据。

Simulink.sdi.clear
Simulink.sdi.load('AircraftExample.mldatx');

使用 Simulink.sdi.getRunCount 函数在仿真数据检查器中获取运行次数。您可以将此数字用作每次运行时执行的 for 循环的索引。

count = Simulink.sdi.getRunCount;

然后,使用一个 for 循环对每次运行中的第一个信号赋予 0.1 的绝对容差。

for a = 1:count
    runID = Simulink.sdi.getRunIDByIndex(a);
    aircraftRun = Simulink.sdi.getRun(runID);
    sig = getSignalByIndex(aircraftRun,1);
    sig.AbsTol = 0.1;
end

相关示例

参数

此应用程序没有可用的参数。

编程用途

Simulink.sdi.view 从 MATLAB 命令行打开仿真数据检查器。

版本历史记录

在 R2010b 中推出

全部展开