此示例演示如何使用模型度量API以编程方式收集模型的子系统和块计数度量。收集模型的度量值后,可以访问结果并将其导出到文件中。
开放式vdp。
模型=“vdp”开放式系统(模型);
要收集模型上的度量数据,请创建度量引擎对象并调用处决
.
公制_引擎=slmetric.engine();setAnalysisRoot(公制发动机,“根”,“vdp”,“根类型”,“模型”); 执行(米制引擎);
正在更新Model Advisor缓存…Model Advisor缓存已更新。对于新的自定义设置,要更新缓存,请使用Advisor.Manager.refresh\u customizations方法。
使用getMetrics
方法,指定要收集的度量。对于本例,请指定vdp
模型getMetrics
返回一个slmetric.metric.ResultCollection
物体。
res_col=getMetrics(metric_引擎{'mathworks.metrics.万博1manbetxSimulinkBlockCount',...'mathworks.metrics.SubSystemCount'});
创建单元阵列计量数据
储存MetricID
,组件路径
和价值
对于度量结果。这个MetricID
是度量的标识符组件路径
为其计算度量的组件的路径,以及价值
是度量值。请编写循环以显示结果。
计量数据={“MetricID”,“组件路径”,“价值”}cnt=1;对于n=1:长度(分辨率)如果res_col(n).Status==0 results=res_col(n).results;对于m=1:长度(结果)显示([“MetricID:”结果(m.MetricID]);disp(['组件路径:',结果(m).组件路径];显示(['值:',num2str(results(m).Value)];metricData{cnt+1,1}=results(m).MetricID;metricData{cnt+1,2}=results(m).ComponentPath;metricData{cnt+1,3}=results(m).Value;cnt=cnt+1;终止其他的disp(['没有结果:',res_col(n.MetricID));终止disp(' ');终止
MetricID:mathworks.metrics.S万博1manbetximulinkBlockCount组件路径:vdp值:11 MetricID:mathworks.metrics.SimulinkBlockCount组件路径:vdp/更多信息值:1 MetricID:mathworks.metrics.SimulinkBlockCount组件路径:vdp/更多信息/模型信息/空子系统值:0 MetricID:mathworks.metrics.SubSystemCount组件路径:vdp值:1 MetricID:mathworks.metrics.SubSystemCount组件路径:vdp/更多信息值:0 MetricID:mathworks.metrics.SubSystemCount组件路径:vdp/更多信息/模型信息值:1 MetricID:mathworks.metrics.SubSystemCount组件路径:vdp/更多信息/模型信息/Emp子系统值:0
输出计量数据
后果MetricID
,组件路径
和价值
要创建电子表格,请使用可写
写计量数据
到MySpreadsheet.xlsx
.
文件名=“MySpreadsheet.xlsx”;T=表(metricData);可写(T,文件名);
要将度量结果导出到XML文件,请使用exportMetrics
对于每个度量结果,XML文件包括组件
,组件路径
,MetricID
,价值
,聚合值
和测量
.
文件名=“MyMetricResults.xml”;导出度量(度量引擎,文件名)
关闭模型vdp
.
bdclose(模型);
对于一个模型,不能将度量数据收集到同一数据库文件(即Metrics.db
文件)在多个平台上。
公制发动机
|slmetric.metric.Result
|slmetric.metric.ResultCollection