Можно лучше понять размер, сложность и читаемость модели и ее компонентов, анализируя агрегированные данные метрики модели. Агрегированные метрические данные доступны в AggregatedValue и AggregatedMeasures свойства slmetric.metric.Result объект. AggregatedValue свойство агрегирует скалярные значения метрики. AggregatedMeasures свойство агрегирует метрические измерения (то есть подробную информацию о метрических значениях).
Реализация метрики модели определяет, как метрика агрегирует данные по иерархии компонентов. Для метрик модели MathWorks slmetric.metric.Metric класс определяет агрегацию метрик модели. Этот класс включает в себя AggregationMode свойство, которое имеет следующие опции:
Sum: Возвращает сумму Value собственность и Value свойств дочерних компонентов в иерархии компонентов. Возвращает сумму Meaures собственность и Measures свойств дочерних компонентов в иерархии компонентов.
Max: Возвращает максимальное значение Value собственность и Value свойств дочерних компонентов в иерархии компонентов. Возвращает максимальное значение Measures собственность и Measures свойств дочерних компонентов в иерархии компонентов.
None: Нет агрегирования метрических значений.
Можно найти описания метрик модели MathWorks и их AggregationMode параметр свойства в окне «Метрики модели». Для пользовательских метрик, как часть algorithm можно определить способ агрегирования данных метрики. Дополнительные сведения см. в разделе Создание пользовательской метрической метрики модели для невиртуального счетчика блоков.
На этой диаграмме показано, как программное обеспечение агрегирует метрические данные по компонентам иерархии модели. Родительская модель находится в верхней части иерархии. Компоненты могут быть следующими:
Модель
Блок подсистемы
Диаграмма
Функциональный блок MATLAB
Защищенная модель

В этом примере показано, как собрать данные метрики программным способом в механизме метрики, а затем получить доступ к агрегированным данным метрики.
Загрузить sldemo_applyVarStruct модель.
model = 'sldemo_applyVarStruct'; open(model); load_system(model);
Создание slmetric.Engine и задайте корень анализа.
metric_engine = slmetric.Engine(); setAnalysisRoot(metric_engine,'Root',model,'RootType','Model');
Сбор данных для метрики входной выходной модели.
execute(metric_engine,'mathworks.metrics.IOCount');
Получение данных метрики модели, возвращающих массив slmetric.metric.ResultCollection объекты, res_col. Укажите входной аргумент для AggregationDepth.
res_col = getMetrics(metric_engine,'mathworks.metrics.IOCount',... 'AggregationDepth','All');
AggregationDepth входной аргумент имеет две опции: All и None. Если вы не хотите getMetrics метод агрегирования показателей и значений, указать None.
Просмотрите результаты.
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Вот результаты:
MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct Value: 3 Aggregated Value: 5 Measures: 1 2 0 0 Aggregated Measures: 3 2 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct/Controller Value: 4 Aggregated Value: 4 Measures: 3 1 0 0 Aggregated Measures: 3 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct/Aircraft Dynamics Model Value: 5 Aggregated Value: 5 Measures: 3 2 0 0 Aggregated Measures: 3 2 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct/Dryden Wind Gust Models Value: 2 Aggregated Value: 2 Measures: 0 2 0 0 Aggregated Measures: 0 2 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct/Nz pilot calculation Value: 3 Aggregated Value: 3 Measures: 2 1 0 0 Aggregated Measures: 2 1 0 0 MetricID: mathworks.metrics.IOCount ComponentPath: sldemo_applyVarStruct/More Info2 Value: 0 Aggregated Value: 0 Measures: 0 0 0 0 Aggregated Measures: 0 0 0 0
Для входной выходной метрики AggregationMode является Max. Для каждого компонента: AggregatedValue и AggregatedMeasures свойства - максимальное количество входов и выходов самого себя и его дочерних компонентов. Например, для sldemo_applyVarStruct, AggregatedValue свойство - 5, который является sldemo_applyVarStruct/Aircraft Dynamics Model значение компонента.
slmetric.Engine | slmetric.metric.Metric | slmetric.metric.Result | slmetric.metric.ResultCollection