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