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

В этом примере показано, как выполнить программный сбор метрических данных в механизме метрики, а затем получить доступ к агрегированным метрическим данным.
Загрузите sldemo_applyVarStruct модель.
model = 'sldemo_applyVarStruct'; open(model); load_system(model);
Создайте slmetric.Engine Объекту и установите корень анализа.
metric_engine = slmetric.Engine(); setAnalysisRoot(metric_engine,'Root',model,'RootType','Model');
Соберите данные для метрики выходной модели Input.
execute(metric_engine,'mathworks.metrics.IOCount');
Получите метрические данные модели, которая возвращает массив slmetric.metric.ResultCollection объекты, res_col. Задайте входной параметр для AggregationDepth.
res_col = getMetrics(metric_engine,'mathworks.metrics.IOCount',... 'AggregationDepth','All');
The 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