主要内容

为非虚拟块计数创建自定义模型度量

这个例子展示了如何使用模型度量API来创建一个自定义模型度量来计数模型中的非虚拟块。创建度量之后,您可以为度量收集数据、访问结果并导出结果。

创建度量类

要创建自定义模型度量,请使用slmetric.metric.createNewMetricClass函数创建从基类派生的新度量类slmetric.metric.metric.的slmetric.metric.createNewMetricClass函数创建一个包含构造函数和空度量算法方法的文件。

1.对于本例,请确保您位于可写文件夹中,并创建一个名为的新度量类非虚拟锁计数

类名=“非虚拟锁计数”;slmetric.metric.createNewMetricClass(类名);

2.确保定制metricID命名非虚拟锁计数尚未在模型度量存储库中注册。

slmetric.metric.unregisterMetric(“非虚拟锁计数”);slmetric.metric.refresh();

3.把度量算法写进slmetric.metric.metric方法,算法.该算法计算指定的度量数据组件课堂上Advisor.component.Types类指定可以为其计算度量数据的模型对象的类型非虚拟锁计数包含创建统计非虚拟块的度量的逻辑。将此文件复制到非虚拟锁计数文件。

拷贝文件非虚拟锁计数非虚拟锁计数F

创建自定义度量时,必须设置slmetric.metric.metric类别:

  • 身份证件:检索新度量数据的唯一度量标识符。

  • 名称:度量算法名称。

  • 组件示波器:为其计算度量的模型组件。

  • 编译文本:用于度量计算的编译模式。如果您的模型需要编译模型,请指定邮政编码。收集已编译模型的度量数据会降低性能。

  • 结果覆盖率:指定如果源文件和,是否需要重新生成度量数据版本没有改变。

  • 聚合模式:度量算法如何聚合度量数据

你可以选择设置这些额外的属性:

  • 描述:度量的说明。

  • 版本:标准的版本。

4.现在你的新模型指标已经在nonvirtualblockcount中定义了。M,您可以在度量存储库中注册新的度量。

[id\u metric,err\u msg]=slmetric.metric.registerMetric(className);

收集度量数据

要收集模型的度量数据,请使用的实例slmetric。引擎.使用getMetrics方法,指定要收集的度量。对于本例,指定sldemo_mdlref_bus模型

1.加载sldemo_mdlref_总线模型。

模型=“sldemo_mdlref_bus”;负荷系统(模型);

2.创建一个度量引擎对象并设置分析根。

公制_引擎=slmetric.engine();setAnalysisRoot(公制发动机,“根”模型“根类型”,“模型”);

3.收集非虚拟块计数度量的度量数据。

执行(metric\u引擎,id\u metric);rc=getMetrics(metric\u引擎,id\u metric);

显示和导出结果

要访问模型的指标,请使用的实例slmetric.metric.Result.在本例中,显示sldemo_mdlref_bus模型的非虚拟块计数指标。对于每个结果,显示MetricID、ComponentPath和Value。

对于n=1:长度(rc)如果rc (n)。Status == 0 results = rc(n).Results;对于m=1:长度(结果)显示([“MetricID:”,结果(m) .MetricID]);disp(['组件路径:',结果(m).组件路径];显示(['值:',num2str(结果(m).Value)];disp(' ');终止其他的disp([“没有结果:”rc (n) .MetricID]);终止disp (' ');终止
MetricID:非虚拟锁计数
ComponentPath: sldemo_mdlref_bus
价值:13

              
MetricID:非虚拟锁计数
ComponentPath: sldemo_mdlref_bus / Info4
数值:0

              
MetricID:非虚拟锁计数
ComponentPath: sldemo_mdlref_counter_bus
价值:2

              
MetricID:非虚拟锁计数
ComponentPath: sldemo_mdlref_counter_bus /计数器
价值:6

              
MetricID:非虚拟锁计数
组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器
价值:3

              
MetricID:非虚拟锁计数
组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器/重置检查
价值:4

              
MetricID:非虚拟锁计数
组件路径:sldemo_mdlref_计数器_总线/计数器/计数器/重置检查/NoReset
价值:2

              
MetricID:非虚拟锁计数
组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器/重置检查/重置
价值:3

              
MetricID:非虚拟锁计数
ComponentPath: sldemo_mdlref_counter_bus /计数器/计数器/ SaturationCheck
价值:5

              
MetricID:非虚拟锁计数
组件路径:sldemo\u mdlref\u计数器\u总线/计数器/限制进程
价值:1

              

              

要将度量结果导出到XML文件,请使用exportMetrics方法。对于每个指标结果,XML文件包括组件,ComponentPath,MetricID,价值,聚合值,测量

文件名=“MyMetricData.xml”;exportMetrics (metric_engine文件名);

对于本例,取消注册非虚拟块计数度量。

slmetric.metric.unregisterMetric (id_metric);

关闭模型。

清晰;bdclose (“全部”);

限制

自定义度量算法不支持组件对象上的路径属性:金宝app

  • 有关Stateflow图表

  • MATLAB功能块

自定义度量算法不遵循库链接。

版权所有2019 The MathWorks, Inc.

另见

|||||

相关的话题