Model Metric Data Aggregation
You can better understand the size, complexity, and readability of a model and its
components by analyzing aggregated model metric data. Aggregated metric data is
available in the AggregatedValue and
AggregatedMeasures properties of an slmetric.metric.Result object. The AggregatedValue property aggregates the metric scalar
values. The AggregatedMeasures property aggregates the metric
measures (that is, the detailed information about the metric values).
How Model Metric Aggregation Works
The implementation of a model metric defines how a metric aggregates data across a
component hierarchy. For MathWorks model metrics, the slmetric.metric.Metric class defines
model metric aggregation. This class includes the AggregationMode
property, which has these options:
Sum: Returns the sum of theValueproperty and theValueproperties of its children components across the component hierarchy. Returns the sum of theMeauresproperty and theMeasuresproperties of its children components across the component hierarchy.Max: Returns the maximum of theValueproperty and theValueproperties of its children components across the component hierarchy. Returns the maximum of theMeasuresproperty and theMeasuresproperties of its children components across the component hierarchy.None: No aggregation of metric values.
You can find descriptions of MathWorks model metrics and their
AggregationMode property setting in Model Metrics. For custom metrics, as
part of the algorithm method, you can define how the metric
aggregates data. For more information, see Create a Custom Model Metric for Nonvirtual Block Count.
This diagram shows how the software aggregates metric data across the components of a model hierarchy. The parent model is at the top of the hierarchy. The components can be the following:
Model
Subsystem block
Chart
MATLAB function block
Protected model

In the diagram, the AggregationMode is Sum
and the model and components in the hierarchy each have a Value
and an AggregatedValue. The AggregatedValue
for a parent model or component is the sum of its Value and the
AggregatedValue of each direct child component. For example,
in this diagram, the AggregatedValue of the parent model is
75. The AggregatedValue of the parent
model is calculated as the sum of the Value of the parent model,
6, plus the AggregatedValue of each direct
child component, 33, 17, and
19.
Access Aggregated Metric Data
This example shows how to collect metric data programmatically in the metric engine, and then access aggregated metric data.
Load the
sldemo_auto_climatecontrolmodel.openExample('sldemo_auto_climatecontrol')Create an
slmetric.Engineobject and set the analysis root.metric_engine = slmetric.Engine(); setAnalysisRoot(metric_engine,'Root',... 'sldemo_auto_climatecontrol','RootType','Model');
Collect data for the Input output model metric.
execute(metric_engine,'mathworks.metrics.IOCount');Get the model metric data that returns an array of
slmetric.metric.ResultCollectionobjects,res_col. Specify the input argument forAggregationDepth.res_col = getMetrics(metric_engine,'mathworks.metrics.IOCount',... 'AggregationDepth','All');
The
AggregationDepthinput argument has two options:AllandNone. If you do not want thegetMetricsmethod to aggregate measures and values, specifyNone.Display the results.
metricData ={'MetricID','ComponentPath','Value',... 'AggregatedValue','Measures','AggregatedMeasures'}; cnt = 1; for n=1:length(res_col) if res_col(n).Status == 0 results = res_col(n).Results; for m=1:length(results) disp(['MetricID: ',results(m).MetricID]); disp([' ComponentPath: ',results(m).ComponentPath]); disp([' Value: ',num2str(results(m).Value)]); disp([' Aggregated Value: ',num2str(results(m).AggregatedValue)]); disp([' Measures: ',num2str(results(m).Measures)]); disp([' Aggregated Measures: ',... num2str(results(m).AggregatedMeasures)]); metricData{cnt+1,1} = results(m).MetricID; metricData{cnt+1,2} = results(m).ComponentPath; metricData{cnt+1,3} = results(m).Value; tdmetricData{cnt+1,4} = results(m).Measures; metricData{cnt+1,5} = results(m).AggregatedMeasures; cnt = cnt + 1; end else disp(['No results for:',res_col(n).MetricID]); end disp(' '); end
Here are the results:
MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol Value: 0 Aggregated Value: 9 Measures: 0 0 0 0 Aggregated Measures: 5 4 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/AC Control Value: 6 Aggregated Value: 6 Measures: 5 1 0 0 Aggregated Measures: 5 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/External Temperature in Celsius Value: 1 Aggregated Value: 1 Measures: 0 1 0 0 Aggregated Measures: 0 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Heat from occupants Value: 1 Aggregated Value: 1 Measures: 0 1 0 0 Aggregated Measures: 0 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Heater Control Value: 8 Aggregated Value: 8 Measures: 5 3 0 0 Aggregated Measures: 5 3 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Interior Dynamics Value: 3 Aggregated Value: 3 Measures: 2 1 0 0 Aggregated Measures: 2 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/More Info Value: 0 Aggregated Value: 0 Measures: 0 0 0 0 Aggregated Measures: 0 0 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Subsystem Value: 2 Aggregated Value: 2 Measures: 1 1 0 0 Aggregated Measures: 1 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Subsystem1 Value: 2 Aggregated Value: 2 Measures: 1 1 0 0 Aggregated Measures: 1 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/Temperature Control Chart Value: 9 Aggregated Value: 9 Measures: 5 4 0 0 Aggregated Measures: 5 4 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_auto_climatecontrol/User Setpoint in Celsius Value: 1 Aggregated Value: 1 Measures: 0 1 0 0 Aggregated Measures: 0 1 0 0
For the Input output metric, the AggregationMode is
Max. For each component, the
AggregatedValue and AggregatedMeasures
properties are the maximum number of inputs and outputs of itself and its children
components. For example, for sldemo_auto_climatecontrol, the
AggregatedValue property is 9, which is
the sldemo_auto_climatecontrol/Temperature Control Chart
component value.
See Also
slmetric.metric.Metric | slmetric.Engine | slmetric.metric.Result | slmetric.metric.ResultCollection