仿真数据检查器如何比较数据

可以定制仿真数据检查器比较过程,以多种方式满足您的需求。在比较各运行时,仿真数据检查器会执行以下操作:

  1. 根据对齐设置,对齐基线运行和比较项运行中的信号对组。

    仿真数据检查器不会比较无法对齐的信号。

  2. 根据指定的同步方法同步对齐的信号对组。

    根据指定的插值方法,对同步中添加的时间点值进行插值。

  3. 计算信号对组的差值。

  4. 将差值结果与指定的容差进行比较。

在比较运行完成后,比较的结果将显示在导航窗格中。

状态比较结果

差值在指定的容差范围内。

差值违反指定的容差。

信号未与来自比较项运行的信号对齐。

        当比较具有不同时间区间的信号时,仿真数据检查器会比较其重叠区间上的信号。

信号对齐

        在对齐步骤中,仿真数据检查器决定来自比较项运行的哪个信号与基线运行中的给定信号配对。当使用仿真数据检查器比较信号时,可以通过选择基线比较项信号来完成对齐步骤。

        仿真数据检查器使用信号的数据源、路径、SID 和信号名称属性的组合来对齐信号。

属性描述
数据源从工作区导入的数据在 MATLAB® 工作区中的变量路径
路径模型中数据源的模块路径
SID

自动分配的 Simulink® 标识符

信号名称模型中信号的名称

使用默认对齐设置时,仿真数据检查器会根据此流程图在各运行之间对齐信号。如图所示:

        可以在仿真数据检查器的预设项中为用于对齐的每个信号属性指定优先级。对齐方式字段指定用于对齐信号的最高优先级属性。优先级随着每个后续的然后依据字段依次下降。必须在对齐方式字段中指定主要对齐属性,但可以将任何数量的然后依据字段留空。

同步

        通常,要比较的信号包含的时间点集合不会完全相同。仿真数据检查器比较中的同步步骤解决信号的时间向量的差异。可以选择 union 或 intersection 作为同步方法。默认情况下,MATLAB 中的数字的数据类型为 double。可以使用 class 函数验证变量的类型。

        当指定 union 同步时,仿真数据检查器会构建一个时间向量,其中包括两个信号之间的每个采样时间。对于两个信号中最初都不存在的每个采样时间,仿真数据检查器会对其进行插值。示意图中的第二个图显示联合同步过程,其中仿真数据检查器识别要添加到每个信号中的采样,由非实心圆表示。最终绘图显示仿真数据检查器对添加的时间点进行插值后的信号。仿真数据检查器使用最终绘图中的信号计算差值,以便计算的差值信号包含信号之间的所有数据点。

        如图所示:

        当指定 intersection 同步时,仿真数据检查器在比较中仅使用两个信号中都存在的采样时间。在第二个绘图中,仿真数据检查器识别没有对应采样进行比较的采样,显示为非实心圆。最终图显示用于比较的信号,不包含第二个图中识别出的那些采样。

        如图所示:     

        选择哪个同步选项涉及速度和准确度之间的权衡。union 同步所需的插值需要耗费一定的时间,但会提供更准确的结果。当使用 intersection 同步时,比较会很快完成,因为仿真数据检查器会计算较少数据点的差异,而且不会进行插值。但是,使用 intersection 同步时,会丢弃一些数据,准确度有所降低。

插值

        信号的插值属性确定仿真数据检查器如何显示信号以及在同步中如何计算其他数据值。可以选择使用零阶保持 (zoh) 或线性逼近对数据进行插值。也可以指定不进行插值。

        如图所示:

        当为插值方法指定zoh 或 none 时,仿真数据检查器将对插值的采样时间复制上一个采样的数据。当指定 linear 插值时,仿真数据检查器使用插值点两侧的采样来线性逼近所插的值。通常,离散信号使用 zoh 插值,连续信号使用 linear 插值。可以在信号属性中为信号指定插值方法

容差设定

        仿真数据检查器允许您指定信号容差的范围和值。可以使用绝对、相对和时间容差值的任意组合来定义容差带,并且可以指定所指定的容差是应用于单个信号还是应用于一次运行中的所有信号。

容差范围

        在仿真数据检查器中,可以为数据全局指定容差,也可以为单个信号指定容差。全局容差值会应用于覆盖全局容差未设置为yes的一次运行中的所有信号。可以在比较视图的图形查看区域顶部为数据指定全局容差值。要指定信号特定的容差值,请编辑信号属性,并确保覆盖全局容差属性设置为yes。

容差计算

        在仿真数据检查器中,可以使用绝对、相对和时间容差值的组合为运行或信号指定容差带。当使用多种类型的容差为运行或信号指定容差时,每个容差可能在每个点上产生不同的容差结果。这时仿真数据检查器会通过为每个数据点选择最宽松的容差结果来计算整体容差带。

        当仅使用绝对和相对容差属性定义容差时,仿真数据检查器会简单地将每个点的容差计算为最大值。

tolerance = max(absoluteTolerance,relativeTolerance*abs(baselineData));

        容差带的上界通过将 tolerance加到基线信号上形成。同样,仿真数据检查器通过从基线信号中减去 tolerance 来计算容差带的下界。

        当指定时间容差时,仿真数据检查器会首先计算每个采样在其时间区间内的时间容差,该时间区间定义为 [(tsamp-tol), (tsamp+tol)]。仿真数据检查器通过选择每个采样的时间区间容差内的最小值点来构建容差带的下界。同样,它还会选择每个采样的时间区间容差内的最大值点定义为其容差上界。

        如图所示:

        如果除了使用时间容差,还使用绝对或相对容差指定容差带,则仿真数据检查器将首先应用时间容差,然后将绝对和相对容差应用于用时间容差选择的最大值和最小值点。

        如图所示:

upperTolerance = max + max(absoluteTolerance,relativeTolerance*max)

lowerTolerance = min - max(absoluteTolerance,relativeTolerance*min)

### MATLAB 中使用仿真数据检查器进行数据分析 #### 配置模型以记录数据仿真数据检查器 为了使仿真数据能够被仿真数据检查器捕获并展示,需确保已正确配置 Simulink 模型以便将所需信号设置为可记录状态。这通常涉及选择特定的信号线,在其属性中启用“Log Signal Data”选项[^1]。 #### 清除现有数据 如果希望清理当前存储于仿真数据检查器内的任何先前的数据集,则可以通过调用 `Simulink.sdi.clear` 函数实现这一目的。此命令将会移除所有之前保存的结果,从而允许重新加载新的模拟输出而不会混淆旧有的测量值[^2]。 #### 创建自定义图表 利用仿真数据检查器提供的 API 接口,可以编写脚本来自动化图形生成流程。例如,下面是一个简单的 Python 脚本片段展示了怎样通过编程方式向仿真数据检查器添加新图: ```python import matlab.engine as mateng engine = mateng.start_matlab() runID = engine.get_param('modelname', 'SimulationDataInspectorRunId') plotHandle = engine.createPlot(runID, "SignalName", "TimeSeries") ``` 这段代码启动了一个 Matlab 引擎实例,并获取指定模型最后一次运行 ID 后创建一个新的时间序列图。 #### 数据对比分析 对于不同条件下产生的多组实验结果之间的差异性研究,仿真数据检查器支持灵活调整匹配参数来进行精确对照。它会自动识别两套或多套测试间的公共变量,并基于设定的标准计算它们之间数值上的差距程度;同时提供可视化手段帮助直观理解这些变化趋势[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值