主要内容

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

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

创建度量标准类

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

1.对于本例,请确保您处于可写文件夹中,并创建一个名为的新度量类nonvirtualblockcount.

ClassName =.'nonvirtualblockcount';slmetric.Metric.createneWMetricClass(ClassName);

2.把度量算法写进Slmetric.Metric.Metric.方法,算法.该算法计算指定的度量数据advisor.component.component.类。的Advisor.component.Types类指定可以为其计算度量数据的模型对象的类型。对于本例,文件nonvirtualblockcount_orig.m.包含创建计数非维块块的度量标准的逻辑。将此文件复制到nonvirtualblockcount.m.文件。

拷贝文件nonvirtualblockcount_orig.m.nonvirtualblockcount.m.F

创建自定义度量时,必须设置slmetric.metric.Metric类的以下属性:

  • ID:检索新度量数据的唯一度量标识符。

  • 名称:度量算法名称。

  • ComponentScope.:为其计算度量的模型组件。

  • CompileContext:编译模式进行度量计算。如果您的模型需要模型编译,请指定postcompile..收集编译型号的公制数据慢速性能。

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

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

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

  • 描述:指标描述。

  • 版本:标准的版本。

3.现在您的新模型度量标准在NonVirtualBlockCount.M中定义,您可以在度量标准存储库中注册新的度量标准。

[id_metric, err_msg] = slmetric.metric.registerMetric(名称);

收集度量数据

收集模型的公制数据,使用实例slmetric。引擎.使用getmetrics.方法,指定要收集的指标。对于此示例,请指定非virtual块计数度量sldemo_mdlref_bus模型。

1.加载sldemo_mdlref_bus模型。

模型=“sldemo_mdlref_bus”;load_system(型号);

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

metric_engine = slmetric.engine();SetAnaliseRoot(Metric_Engine,'根',模型,'roottype'“模型”);

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

执行(metric_engine);RC = GetMetrics(Metric_Engine,ID_metric);

显示和导出结果

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

为了n = 1:长度(RC)如果rc (n)。Status == 0 results = rc(n).Results;为了m = 1:长度(结果)disp(['MetriciD:',结果(m) .MetricID]);DISP(['ComponentPath:',结果(m).componentpath]);DISP([' 价值: ',num2str(结果(m).value)]);DISP('');结尾别的DISP([“没有结果:”rc (n) .MetricID]);结尾DISP('');结尾
MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_bus值:13 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_bus /更多INFO3数值:0 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_bus /更多信息4值:0 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_bus /更多信息1数值:0 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_bus /更多信息2值:0 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus值:2 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /计数器值:6 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /计数器/计数器值:3 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /计数器/计数器/ resetcheck值:4 metricID:nonvirtuirualblockcount component pather:sldemo_mdlref_counter_bus / counter / counter / resetch / noreet值复位值:3 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /计数器/计数器/ SaturationCheck值:5 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /计数器/ LimitsProcess值:1 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus /更多信息1数值:0 MetricID:nonvirtualblockcount ComponentPath:sldemo_mdlref_counter_bus/更多info2值:0

要将度量结果导出到XML文件,请使用exportMetrics方法。对于每个指标结果,XML文件包括componentId.ComponentPath金钱价值AggregatedValue,措施

文件名='mymetricdata.xml';exportMetrics (metric_engine文件名);

对于此示例,取消注册非virtual块计数度量。

slmetric.metric.unregisterMetric (id_metric);

关闭模型。

清晰;bdclose ('全部');

限制

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

  • 有关Stateflow图表

  • MATLAB功能块

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

版权所有2019 The MathWorks, Inc.

也可以看看

|||||

相关的话题