主要内容

创建一个自定义模型度量Nonvirtual块计数

这个例子展示了如何使用该模型度量API来创建一个自定义模型度量模型中计算nonvirtual街区。在创建度量之后,你可以收集度量数据,访问结果,并导出结果。

创建度量类

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

1。对于这个示例,确保你在一个可写文件夹,创建一个新的度量类命名nonvirtualblockcount

className =“nonvirtualblockcount”;slmetric.metric.createNewMetricClass(名称);

2。确保一个定制的metricID命名nonvirtualblockcount不是已经注册在模型度量库中。

slmetric.metric.unregisterMetric (“nonvirtualblockcount”);slmetric.metric.refresh ();

3所示。写进度量算法slmetric.metric.Metric方法,算法。该算法计算指定的度量数据Advisor.component.Component类。的Advisor.component.Types类指定了类型的模型可以计算度量数据的对象。对于这个示例,该文件nonvirtualblockcount_orig.m包含逻辑来创建一个计数度量nonvirtual块。将这个文件复制到nonvirtualblockcount.m文件。

拷贝文件nonvirtualblockcount_orig.mnonvirtualblockcount.mf

当创建一个自定义指标时,必须设置以下属性的slmetric.metric.Metric类:

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

  • 的名字:度量算法的名称。

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

  • CompileContext为指标计算:编译模式。如果你的模型需要编译,指定PostCompile。收集度量数据编译模型降低性能。

  • ResultCheckSumCoverage:指定是否你想要度量数据再生如果源文件版本没有改变。

  • AggregationMode:如何度量算法集合度量数据

可选地,您可以设置这些附加属性:

  • 描述:指标的描述。

  • 版本:标准的版本。

4所示。现在你的新模型在nonvirtualblockcount度量定义。米,你可以注册新的度量指标库。

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

收集度量数据

收集度量数据模型,使用的实例slmetric.Engine。使用getMetrics方法,指定您想要收集指标。对于这个示例,指定nonvirtual块计数度量的sldemo_mdlref_conversion模型。

1。加载sldemo_mdlref_conversion模型。

模型=“sldemo_mdlref_conversion”;load_system(模型);

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

metric_engine = slmetric.Engine ();setAnalysisRoot (metric_engine“根”、模型“RootType”,“模型”);

3所示。nonvirtual块计数度量收集度量数据。

执行(metric_engine id_metric);rc = getMetrics (metric_engine id_metric);

显示和导出结果

访问的度量模型,使用的实例slmetric.metric.Result。在这个例子中,显示nonvirtual块计数度量的sldemo_mdlref_conversion模型。对于每一个结果,显示MetricID, ComponentPath和价值。

n = 1:长度(rc)如果rc (n)。状态= = 0 = 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_conversion
值:7

               
MetricID: nonvirtualblockcount
ComponentPath: sldemo_mdlref_conversion /巴士柜台
值:8

               
MetricID: nonvirtualblockcount
ComponentPath: sldemo_mdlref_conversion /更多信息
值:0

               
MetricID: nonvirtualblockcount
ComponentPath: sldemo_mdlref_conversion / SubSystem1
值:0

               

               

将度量结果导出到一个XML文件,使用exportMetrics方法。对于每个度量结果,包括XML文件ComponentID,ComponentPath,MetricID,价值,AggregatedValue,测量

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

对于这个示例,注销nonvirtual块计数度量。

slmetric.metric.unregisterMetric (id_metric);

关闭模式。

清晰;bdclose(模型);

限制

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

  • 有关Stateflow®图表

  • MATLAB函数块

自定义度量算法不遵循图书馆链接。

另请参阅

|||||

相关的话题