这个例子展示了如何使用模型度量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.
advisor.component.component.
|Advisor.component.Types
|slmetric。引擎
|sletric.metric.createnewmetricclass.
|Slmetric.Metric.Metric.
|slmetric.metric.Result