Метрическая агрегация данных модели

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

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

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

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

Смотрите также

| | |

Похожие темы