Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

モデル メトリクス データの集計

集計されたモデル メトリクス データを解析することにより、モデルおよびそのコンポーネントのサイズ、複雑度、可読性をよりよく理解できます。集計されたメトリクス データは、slmetric.metric.Resultオブジェクトの AggregatedValue プロパティと AggregatedMeasures プロパティにあります。AggregatedValue プロパティはメトリクスのスカラー値を集計します。AggregatedMeasures プロパティはメトリクス測定内容 (つまり、メトリクス値に関する詳細情報) を集計します。

モデル メトリクスの集計方法

モデル メトリクスの実装によって、メトリクスがコンポーネント階層全体でデータを集計する方法が定義されます。MathWorks のモデル メトリクスでは、slmetric.metric.Metric クラスがモデル メトリクスの集計を定義します。このクラスには AggregationMode プロパティが含まれ、このプロパティには次のオプションがあります。

  • Sum: コンポーネント階層全体での、Value プロパティとその子コンポーネントの Value プロパティの合計を返します。コンポーネント階層全体での、Meaures プロパティとその子コンポーネントの Measures プロパティの合計を返します。

  • Max: コンポーネント階層全体での、Value プロパティとその子コンポーネントの Value プロパティの最大値を返します。コンポーネント階層全体での、Measures プロパティとその子コンポーネントの Measures プロパティの最大値を返します。

  • None: メトリクス値の集計はありません。

MathWorks のモデル メトリクスとその AggregationMode プロパティの設定についての説明は、Model Metricsに記載されています。カスタム メトリクスの場合は、algorithm メソッドの一部として、メトリクスによるデータの集計方法を定義できます。詳細については、非バーチャル ブロックをカウントするカスタム モデル メトリクスの作成を参照してください。

次の図に、モデルの階層構造にある複数のコンポーネントにわたってソフトウェアがメトリクス データを集計する方法を示します。親モデルが階層の最上位にあります。コンポーネントは以下の可能性があります。

  • モデル

  • Subsystem ブロック

  • チャート

  • MATLAB Function ブロック

  • 保護モデル

集計されたメトリクス データへのアクセス

この例では、メトリクス エンジンでプログラムによってメトリクス データを収集し、集計されたメトリクス データにアクセスする方法を説明します。

  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 には、AllNone の 2 つのオプションがあります。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

入出力メトリクスの場合、AggregationModeMax です。各コンポーネントの AggregatedValue プロパティと AggregatedMeasures プロパティは、コンポーネント自体およびその子コンポーネントの最大入出力数です。たとえば、sldemo_applyVarStructAggregatedValue プロパティは 5 であり、これは sldemo_applyVarStruct/Aircraft Dynamics Model コンポーネントの値です。

参考

| | |

関連するトピック