Можно лучше изучить размер, сложность и удобочитаемость модели и ее компонентов путем анализа агрегированных метрических данных модели. Агрегированные метрические данные доступны в 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
метод, можно задать, как метрика агрегировала данные. Для получения дополнительной информации смотрите, Создают Пользовательскую Метрику Модели для Невиртуального количества Блока.
Эта схема показывает, как программное обеспечение агрегировало метрические данные через компоненты иерархии модели. Родительская модель наверху иерархии. Компоненты могут быть следующими:
Модель
Блок Subsystem
График
Блок MATLAB function
Модель Protected
В этом примере показано, как собрать метрические данные программно в метрическом механизме, и затем доступ агрегировал метрические данные.
Загрузите 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