主要内容

本页采用了机器翻译。点击此处可查看英文原文。

仿真数据检查器

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

说明

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

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

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

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

  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® 工具条:在 Simulation 选项卡下,点击 Review Results 下的 Data Inspector

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

  • 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 are plotted in the Simulation Data Inspector. Two subplots align vertically. 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,该模型仿真二阶范德波尔微分方程。有关该模型的更多信息,请参阅范德波尔振荡器

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 中推出

全部展开