这个例子展示了如何使用模型度量API来创建一个自定义模型度量来计数模型中的非虚拟块。创建度量之后,您可以为度量收集数据、访问结果并导出结果。
要创建自定义模型度量,请使用slmetric.metric.createNewMetricClass
函数创建从基类派生的新度量类slmetric.metric.metric
.slmetric.metric.createNewMetricClass函数创建一个包含构造函数和空metric算法方法的文件。
1.对于本例,请确保您处于可写文件夹中,并创建一个名为的新度量类非虚拟锁计数
.
类名=“非虚拟锁计数”;slmetric.metric.createNewMetricClass(类名);
2.把度量算法写进slmetric.metric.metric
方法,算法
.该算法计算指定的度量数据组件
类。的Advisor.component.Types
类指定可以为其计算度量数据的模型对象的类型。对于本例,文件非虚拟锁计数
包含创建统计非虚拟块的度量的逻辑。将此文件复制到非虚拟锁计数
文件。
拷贝文件非虚拟锁计数非虚拟锁计数F
创建自定义度量时,必须设置slmetric.metric.Metric类的以下属性:
身份证件
:检索新度量数据的唯一度量标识符。
名称
:度量算法名称。
组件示波器
:为其计算度量的模型组件。
CompileContext
:用于度量计算的编译模式。如果您的模型需要编译模型,请指定邮政编码
。收集已编译模型的度量数据会降低性能。
ResultCheckSumCoverage
:指定如果源文件和,是否需要重新生成度量数据版本
没有改变。
聚合模式
:度量算法如何聚合度量数据
你可以选择设置这些额外的属性:
描述
:度量的说明。
版本
:标准的版本。
3.现在你的新模型指标已经在nonvirtualblockcount中定义了。M,您可以在度量存储库中注册新的度量。
[id_metric, err_msg] = slmetric.metric.registerMetric(名称);
要收集模型的度量数据,请使用的实例slmetric。引擎
.使用getMetrics
方法,指定要收集的度量。对于本例,指定sldemo_mdlref_bus
模型
1.加载sldemo_mdlref_bus模型。
模型=“sldemo_mdlref_bus”;负荷系统(模型);
2.创建一个度量引擎对象并设置分析根。
公制_引擎=slmetric.engine();setAnalysisRoot(公制发动机,“根”模型“根类型”,“模型”);
3.收集非虚拟块计数度量的度量数据。
执行(度量引擎);rc=getMetrics(度量引擎,id度量);
要访问模型的指标,请使用的实例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:NonVirtualLockCount ComponentPath:sldemo\u mdlref\u总线值:13 MetricID:NonVirtualLockCount ComponentPath:sldemo\u mdlref\u总线/更多信息3值:0 MetricID:NonVirtualLockCount ComponentPath:sldemo\u mdlref\u总线/更多信息4值:0 MetricID:NonVirtualLockCount ComponentPath:sldemo\u mdlref\u总线/更多信息1值:0 MetricID:nonvirtualblockcount组件路径:sldemo\u mdlref\u总线/更多信息2值:0 MetricID:非虚拟锁组件路径:sldemo\u mdlref\u计数器\u总线值:2 MetricID:非虚拟锁组件路径:sldemo\u mdlref\u计数器\u总线/计数器值:6 MetricID:非虚拟锁组件路径:sldemo\u mdlref\u计数器\u总线/计数器值:3 MetricID:非虚拟锁计数组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器/重置检查值:4公制ID:非虚拟锁计数组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器/重置检查/无重置设置值:2公制ID:非虚拟锁计数组件路径:sldemo\u mdlref\u计数器\u总线/计数器/计数器/重置检查/重置值:3公制ID:非虚拟锁计数C组件路径:sldemo_mdlref_计数器_总线/计数器/计数器/饱和检查值:5 MetricID:非虚拟锁计数组件路径:sldemo_mdlref_计数器_总线/计数器/限制进程值:1 MetricID:非虚拟锁计数组件路径:sldemo_mdlref_计数器_总线/更多信息1值:0 MetricID:非虚拟锁计数组件路径:sldemo_mdlref计数器_总线/More INFO 2值:0
要将度量结果导出到XML文件,请使用exportMetrics方法。对于每个指标结果,XML文件包括组件
,ComponentPath
,MetricID
,价值
,AggregatedValue
,测量
.
文件名=“MyMetricData.xml”;exportMetrics (metric_engine文件名);
对于本例,取消注册非虚拟块计数度量。
slmetric.metric.unregisterMetric (id_metric);
关闭模型。
清晰;bdclose (“全部”);
自定义度量算法不支持组件对象的path属性:金宝app
有关Stateflow图表
MATLAB功能块
自定义度量算法不遵循库链接。
版权所有2019 The MathWorks, Inc.
组件
|Advisor.component.Types
|slmetric。引擎
|slmetric.metric.createNewMetricClass
|slmetric.metric.metric
|slmetric.metric.Result