在度量板中修改、删除和添加度量阈值
度量盘使用度量阈值来确定度量数据在仪表盘中的显示方式。
根据度量阈值,仪表盘将度量数据分类为:
Compliant - 度量数据在可接受的范围内。小组件中的度量数据显示为绿色。仅包含符合规范的度量数据的小组件会显示绿色对勾图标
。

Warning - 需要审核的度量数据。小组件中的度量数据显示为黄色。包含警告但没有不合度量数据的小组件会显示黄色三角形图标
。

NonCompliant - 需要您修改模型的度量数据。小组件中的度量数据以红色显示。包含不合度量数据的小组件会显示红色圆圈图标
。

您可以使用分类度量数据来评估模型的设计状态和质量。仪表盘中的一些小组件已经包含默认的度量阈值。如果要使用除默认阈值之外的阈值,可以自定义度量阈值。
此示例展示了如何自定义度量阈值,以帮助您识别模型的问题和不合规的度量数据。
获取默认度量阈值
度量盘有两种配置类型:
slmetric.dashboard.Configuration- 仪表盘配置,用于度量盘中显示的布局和小组件类型。slmetric.config.Configuration- 度量配置,用于指定阈值和自定义度量系列。
在这个示例中,您可以使用 slmetric.config.Configuration 对象来指定度量仪表板的阈值。
1.打开度量盘的默认度量配置。
metricConfig = slmetric.config.Configuration.openDefaultConfiguration();
2.从度量配置中获取阈值配置。
thresholdConfig = getThresholdConfigurations(metricConfig);
3.使用函数 getThresholds 返回默认阈值。
defaultThresholds = getThresholds(thresholdConfig);
默认阈值包括度量 mathworks.metrics.CloneContent 的阈值。潜在重用小组件显示由 mathworks.metrics.CloneContent 提供的度量数据。在度量仪表板的架构部分中,潜在重用结果的默认阈值为 0%。度量仪表板仅将潜在重用小组件中的度量数据分类为合规,如果该值小于或等于 0%。

4.获取与潜在重用结果关联的阈值。
potentialReuse = findobj(defaultThresholds,"MetricID","mathworks.metrics.CloneContent")
potentialReuse =
Threshold with properties:
MetricID: 'mathworks.metrics.CloneContent'
AppliesTo: 'Value'
修改现有度量阈值
度量板使用分类将度量数据分类为符合指定阈值的合规、警告或不合规。
使用函数 getClassifications 获取仪表板用于根据阈值对潜在重用结果进行分类的分类。
C = getClassifications(potentialReuse);
Classification 数组 C 包含:
C(1)- 符合潜在再利用标准的分类结果C(2)- 警告潜在重用结果的分类
变更合规值
1.查看符合条件的潜在再利用结果的当前范围。
C(1).Range
ans =
MetricRange with properties:
Start: -Inf
End: 0
IncludeStart: 0
IncludeEnd: 1
根据当前的分类,如果潜在重用值大于负无穷大且小于或等于零,度量数据符合要求。这意味着,如果潜在重用值为 0%,则度量仪表板会将度量数据显示为合规。属性 IncludeStart 和 IncludeEnd 决定范围是否包含 Start 和 End 值。
2.修改符合潜在再利用标准的结果范围。对于本例,允许潜在再利用值小于 20% 的情况符合规定。
C(1).Range.End = 0.2;
请注意,度量 mathworks.metrics.CloneContent 期望该值是一个分数,表示克隆子组件的总数,因此在本例中,End 被指定为 0.2。有关详细信息,请参阅模型度量。
更改警告值
1.查看当前警告潜在重用结果的范围。
C(2).Range
ans =
MetricRange with properties:
Start: 0
End: Inf
IncludeStart: 0
IncludeEnd: 0
根据当前的分类,如果潜在重用值介于零和无穷大之间,度量仪表板将显示警告。这意味着,如果潜在重用值大于 0%,度量仪表板将显示度量数据并发出警告。
2.修改警告潜在重用结果的范围。在本例中,指定度量仪表板仅在潜在重用大于 20% 时显示警告。
C(2).Range.Start = 0.2;
3.查看修改后的潜在再利用阈值范围。
C.Range
ans =
MetricRange with properties:
Start: -Inf
End: 0.2000
IncludeStart: 0
IncludeEnd: 1
ans =
MetricRange with properties:
Start: 0.2000
End: Inf
IncludeStart: 0
IncludeEnd: 0
现在,度量仪表板显示潜在重用值小于或等于 20% 为合规,大于 20% 的值则发出警告。对于模型 vdp,潜在再利用值小于 20%,显示为符合要求。

如果想在本示例中查看更新后的度量仪表板阈值,请在 MATLAB® 命令行窗口中输入以下代码:
save(metricConfig,"FileName","MetricConfig.xml"); slmetric.config.setActiveConfiguration(fullfile(pwd,"MetricConfig.xml")); metricsdashboard vdp
该代码将更新后的度量配置保存到 XML 文件中,将该文件指定为活动配置,并打开度量仪表板。在度量板的工具栏中,点击非编译度量以收集度量数据并查看度量阈值。
移除度量阈值
假设您想移除默认阈值。您可以使用函数 removeThreshold 从配置中删除阈值。
移除潜在重用结果的阈值。
removeThreshold(thresholdConfig,potentialReuse);
现在度量配置中不包含潜在重用结果的阈值,但包含其他度量数据的默认阈值。
如果要在本示例中查看更新后的度量仪表板阈值,请将更新后的度量配置保存到 XML 文件,将该文件指定为活动配置,然后重新打开度量仪表板。在度量板的工具栏中,点击非编译度量以收集度量数据并查看度量阈值。

添加度量阈值
假设您不希望模型包含超过特定数量的模块。您可以为 Simulink® 模块度量 mathworks.metrics.SimulinkBlockCount 添加阈值,如果模型包含的块数超过指定数量,度量仪表板会将度量数据显示为不合规。在这个示例中,您可以定义一个阈值,以便在模型包含超过 11 个块时,“度量仪表板”将模块计数度量显示为不合规。
在阈值配置中添加一个新的阈值,并将度量指定为 "mathworks.metrics.SimulinkBlockCount",并将度量适用的属性指定为 "AggregatedValue"。
customThreshold = addThreshold(thresholdConfig,"mathworks.metrics.SimulinkBlockCount","AggregatedValue")
customThreshold =
Threshold with properties:
MetricID: 'mathworks.metrics.SimulinkBlockCount'
AppliesTo: 'AggregatedValue'
对于函数 addThreshold,您可以将阈值属性指定为 "Value" 或 "AggregatedValue"。
在这种情况下,对于度量 mathworks.metrics.SimulinkBlockCount:
Value- 模块数AggregatedValue- 组件及其子组件的块数
有关其他度量的 Value 和 AggregatedValue 属性的信息,请参阅 模型度量。
指定合规值
1.获取自定义阈值的默认分类。默认分类包含一系列阈值认为符合要求的值。
defaultClassification = getClassifications(customThreshold)
defaultClassification =
Classification with properties:
Category: 'Compliant'
Range: [1×1 slmetric.config.MetricRange]
2.查看分类中的 Range 属性。
defaultClassification.Range
ans =
MetricRange with properties:
Start: -Inf
End: Inf
IncludeStart: 0
IncludeEnd: 0
默认情况下,分类会将任何值显示为合规,因为合规值的范围是从负无穷大到无穷大。
3.修改合规值的范围,使只有小于 10 的值才合规。
defaultClassification.Range.End = 10;
指定警告值
1.为导致警告的度量数据添加分类。
warningClassification = addClassification(customThreshold,"Warning");2.修改警告值的范围,使介于 10 和 11 之间的值返回警告。
warningClassification.Range.Start = 10; warningClassification.Range.End = 11; warningClassification.Range.IncludeStart = 1; % greater than or equal to 10 warningClassification.Range.IncludeEnd = 1; % less than or equal to 11
该范围包括值 10 和 11,因为 IncludeStart 和 IncludeEnd 设置为 1 (true)。
指定不合规值
1.添加不合度量数据的分类。
noncompliantClassification = addClassification(customThreshold,"NonCompliant");2.修改不合规值的范围,使大于 11 的值被视为不合规。
noncompliantClassification.Range.Start = 11;
noncompliantClassification.Range.IncludeStart = 0; % greater than 11 (but not equal to 11)查看更新后的度量仪表板
1.将更新后的度量配置保存为 XML 文件,其中包含更新后的阈值和分类信息。
save(metricConfig,"FileName","MetricConfig.xml");
2.将 XML 文件设置为度量仪表板的活动度量配置。
slmetric.config.setActiveConfiguration(fullfile(pwd,"MetricConfig.xml"));3.度量仪表板会在下次打开模型仪表板时使用活动配置。
metricsdashboard vdp4.在度量板的工具栏中,点击非编译度量以收集度量数据并查看度量阈值。
由于模型 vdp 包含的块数超过 11 Simulink 个,度量仪表板显示度量数据不合规。

另请参阅
addThreshold | getClassifications | getThresholds