创建一个自定义模型度量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函数块
自定义度量算法不遵循图书馆链接。
另请参阅
Advisor.component.Component
|Advisor.component.Types
|slmetric.Engine
|slmetric.metric.Metric
|slmetric.metric.createNewMetricClass
|slmetric.metric.Result