仿真数据检查器如何比较数据
您可以定制仿真数据检查器比较过程,以多种方式满足您的需求。在比较各运行时,仿真数据检查器会执行以下操作:
根据对齐设置,对齐基线运行和比较项运行中的信号对组。
仿真数据检查器不会比较无法对齐的信号。
根据指定的同步方法同步对齐的信号对组。
根据为基线信号指定的插值方法,对在同步中添加的时间点值进行插值。
计算信号对组的差值。
对于除
double
以外的所有信号数据类型,软件会将数据向上转换为double
进行比较。将差值结果与指定的容差进行比较。
在比较运行完成后,比较的结果将显示在导航窗格中。
状态 | 比较结果 |
---|---|
差值在指定的容差范围内。 | |
差值违反指定的容差。 | |
信号未与来自比较项运行的信号对齐。 |
当您比较具有不同时间区间的信号时,仿真数据检查器会比较其重叠区间上的信号。
信号对齐
在对齐步骤中,仿真数据检查器决定来自比较项运行的哪个信号与基线运行中的给定信号配对。当您使用仿真数据检查器比较信号时,可以通过选择基线和比较项信号来完成对齐步骤。
仿真数据检查器使用信号的数据源、路径、SID 和信号名称属性的组合来对齐信号。
属性 | 描述 |
---|---|
数据源 | MATLAB® 工作区中变量的名称 |
路径 | 模型中数据源的模块路径 |
SID | 自动分配的 Simulink® 标识符 |
信号名称 | 模型中信号的名称 |
使用默认对齐设置时,仿真数据检查器会根据此流程图在各运行之间对齐信号。
您可以在仿真数据检查器的预设项中为用于对齐的每个信号属性指定优先级。对齐方式字段指定用于对齐信号的最高优先级属性。优先级随着每个后续的然后依据字段依次下降。您必须在对齐方式字段中指定主要对齐属性,但您可以将任何数量的然后依据字段指定为无。
同步
通常,您要比较的信号包含的时间点集合不会完全相同。仿真数据检查器比较中的同步步骤解决信号的时间向量的差异。您可以选择 union
或 intersection
作为同步方法。
当您指定 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)
限制
仿真数据检查器不支持比较以下项:
在 R2020a 之前:
int64
或uint64
数据类型的信号。可变大小信号。