Main Content

仿真数据检查器

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

说明

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

使用仿真数据检查器,您可以在工作流的多个阶段检查和比较时间序列数据。以下示例工作流展示了仿真数据检查器如何支持设计周期的所有阶段:

  1. 在仿真数据检查器中查看仿真数据Import Data from Workspace or File into Simulation Data Inspector

    在配置为将数据记录到仿真数据检查器的模型中运行仿真,或从工作区或文件导入数据。在以迭代方式修改模型图、参数值或模型配置时,您可以查看和验证模型输入数据或检查记录的仿真数据。

  2. Inspect Simulation Data

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

  3. Compare Simulation Data

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

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

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

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

The Inspect pane of the Simulation Data Inspector shows three subplots. 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,100);

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

The sine wave and cosine wave signals plotted in the Simulation Data Inspector. There are two vertically aligned subplots. In the upper subplot, the Sine, T=5 signal is plotted in blue with a dash-dotted line style. In the lower subplot, Cosine, T=8 signal is plotted in red with a dashed line style.

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

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

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

您可以使用 Simulink.sdi.plot 函数在仿真数据检查器中绘制仿真结果。打开模型 vdp,该模型对二阶 van der Pol 微分方程进行建模。有关该模型的详细信息,请参阅Van der Pol Oscillator

mdl = "vdp";
open_system(mdl)

The vdp model

对模型进行仿真。模型记录两个信号:x1x2。仿真结果存储在名为 out 的单个 SimulationOutput 对象中。

out = sim(mdl);

使用 Simulink.sdi.plot 函数打开仿真数据检查器并绘制结果。

Simulink.sdi.plot(out);

Simulation results are plotted on two vertically aligned subplots in the Simulation Data Inspector. The x1 signal is plotted in the upper subplot. The x2 signal is plotted in the lower subplot.

您可以使用仿真数据检查器编程接口修改多次运行中的同一信号的参数。此示例在数据的所有四次运行中为信号增加 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 中推出