exponenta event banner

Агрегирование метрических данных модели

Можно лучше понять размер, сложность и читаемость модели и ее компонентов, анализируя агрегированные данные метрики модели. Агрегированные метрические данные доступны в 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

  • Защищенная модель

Доступ к агрегированным метрическим данным

В этом примере показано, как собрать данные метрики программным способом в механизме метрики, а затем получить доступ к агрегированным данным метрики.

  1. Загрузить sldemo_applyVarStruct модель.

    model = 'sldemo_applyVarStruct';
    open(model);
    load_system(model);
  2. Создание slmetric.Engine и задайте корень анализа.

    metric_engine = slmetric.Engine();
    setAnalysisRoot(metric_engine,'Root',model,'RootType','Model');

  3. Сбор данных для метрики входной выходной модели.

    execute(metric_engine,'mathworks.metrics.IOCount');
  4. Получение данных метрики модели, возвращающих массив slmetric.metric.ResultCollection объекты, res_col. Укажите входной аргумент для AggregationDepth.

    res_col = getMetrics(metric_engine,'mathworks.metrics.IOCount',...
    'AggregationDepth','All');

    AggregationDepth входной аргумент имеет две опции: All и None. Если вы не хотите getMetrics метод агрегирования показателей и значений, указать None.

  5. Просмотрите результаты.

    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 значение компонента.

См. также

| | |

Связанные темы