メインコンテンツ

slreportgen.report.ModelVariable クラス

名前空間: slreportgen.report
スーパークラス: slreportgen.report.Reporter

モデル変数レポーター

説明

Simulink® モデル変数のレポーター。

メモ

レポートで slreportgen.report.ModelVariable レポーターを使用するには、slreportgen.report.Report クラスまたはサブクラスを使用してレポートを作成する必要があります。

slreportgen.report.ModelVariable クラスは handle クラスです。

クラス属性

HandleCompatible
true

クラス属性の詳細については、クラスの属性を参照してください。

作成

説明

slreportgen.report.ModelVariable オブジェクトは、明示的に作成しません。検出されたモデル変数の slreportgen.report.ModelVariable オブジェクトを取得するには次のようにします。

  • slreportgen.finder.ModelVariableFinder オブジェクトの find メソッドまたは next メソッドを使用して、検出された変数の slreportgen.finder.ModelVariableResult オブジェクトを取得します。

  • slreportgen.finder.ModelVariableResult オブジェクトの getReporter メソッドを呼び出して、slreportgen.report.ModelVariable オブジェクトを取得します。

slreportgen.report.ModelVariable オブジェクトのプロパティを設定することで、モデル変数のレポートをカスタマイズできます。

プロパティ

すべて展開する

レポート対象の変数に対応する Simulink.VariableUsage オブジェクト。このオブジェクトには、変数の名前、変数のソース、および変数を使用するブロックが格納されます。このプロパティは読み取り専用です。

変数値を設定する Model ブロックのパス。文字ベクトルとして指定します。

参照モデルがモデル引数を使用してブロック パラメーター値を設定するとします。モデルに参照モデルの複数のインスタンスがある場合、モデル変数ファインダーは、モデル引数に関連付けられている変数の複数のインスタンスを返します。ModelBlockPath プロパティは、その値を設定する Model ブロックへのパスを提供することにより、変数のインスタンスを一意に特定します。変数が参照モデル内のモデル引数に関連付けられていない場合、ModelBockPath は空です。参照モデルとインスタンス固有のパラメーターの詳細については、参照モデルのブロック パラメーターに対するインスタンス固有の値の構成を参照してください。

この変数を使用するブロックのリストを含めるかどうか。true または false として指定します。FormatPolicy プロパティの値が "Inline Text" の場合、ShowUsedBy プロパティの値に関係なく、レポートにブロックのリストは含まれません。

[次で使用] のリストにあるブロックについてレポートされた内容がレポートに含まれている場合、ブロックのハイパーリンクをクリックするとその内容に移動します。モデル変数、ブロック線図、およびブロックについてのレポートの生成を参照してください。

変数が解決されるワークスペースを含めるかどうか。true または false として指定します。FormatPolicy プロパティの値が "Inline Text" の場合、ShowWorkspaceInfo プロパティの値に関係なく、レポートにワークスペースは含まれません。

変数を使用するブロックのリストの形式を設定するリスト フォーマッタ。mlreportgen.dom.UnorderedList オブジェクトまたは mlreportgen.dom.OrderedList オブジェクトとして指定します。このプロパティの既定値は、mlreportgen.dom.UnorderedList のオブジェクトです。リストの形式をカスタマイズするには、リスト オブジェクトのプロパティを変更するか、そのリスト オブジェクトをリスト項目を含まないカスタマイズしたリスト オブジェクトに置き換えます。

変数値の形式。次のいずれかの string または文字ベクトルとして指定します。

  • "Auto" — 変数値を値のデータ型に応じてテーブルまたは段落のいずれかの形式で示します。

    テーブルの形式になるデータ型には以下が含まれます。

    • cell 配列

    • logical 配列

    • 数値配列

    • MATLAB® table

    • Simulink オブジェクト

    • Stateflow® オブジェクト

    • グラフィックス オブジェクト

    • MATLAB 構造体または構造体配列

    • MATLAB オブジェクトまたはオブジェクト配列

    段落の形式になるデータ型には以下が含まれます。

    • cell ベクトル

    • logical スカラーまたはベクトル

    • 数値スカラーまたはベクトル

    • 文字または文字配列

    • string

    • MATLAB 構造体ベクトル

    • MATLAB オブジェクト ベクトル

  • "Table" — 変数値をテーブルの形式で示します。既定では段落として表示される変数が、代わりにテーブル エントリの形式で示されます。階層構造のオブジェクトである MATLAB 構造体、MATLAB オブジェクト、Simulink オブジェクト、Stateflow オブジェクト、グラフィックス オブジェクトなどの変数は、それ自体がオブジェクトであるプロパティをもつことがあります。その場合、階層がフラット化され、プロパティ値がそのオブジェクトのプロパティのテーブルへのハイパーリンクとして表示されます。オブジェクト プロパティ テーブルにも元のテーブルに戻るハイパーリンクがあります。

  • "Paragraph" — 変数値を段落の形式で示します。既定ではテーブルの形式で示される変数がフラット化され、段落の形式で示されます。

  • "Inline Text" — 変数を周囲のテキストと共にインラインの形式で示します。

属性:

GetAccess
public
SetAccess
public

データ型: char | string

変数の値の形式を設定するために使用されるテーブル レポーター。mlreportgen.report.BaseTable オブジェクトとして指定します。このプロパティの既定値は、TableStyleName プロパティが ModelVariableTable スタイルに設定された BaseTable オブジェクトであり、これは ModelVariable レポーターの既定のテンプレートに定義されています。

テーブルの外観をカスタマイズするには、既定のテーブル レポーターのプロパティを変更するか、そのテーブル レポーターをカスタマイズしたテーブル レポーターに置き換えます。既定またはカスタマイズしたテーブル レポーターの Title プロパティに内容を追加すると、生成されたレポートでテーブルのタイトルの前にその内容が表示されます。

モデル変数の値の形式を設定するための段落フォーマッタ。mlreportgen.dom.Paragraph オブジェクトとして指定します。このプロパティの既定値は、TableStyleName プロパティが ModelVariableParagraph スタイルに設定された BaseTable オブジェクトであり、これは ModelVariable レポーターの既定のテンプレートに定義されています。

段落の外観をカスタマイズするには、mlreportgen.dom.Paragraph オブジェクトのプロパティを変更するか、そのオブジェクトをカスタマイズした mlreportgen.dom.Paragraph オブジェクトに置き換えます。既定または置き換える段落オブジェクトに内容を追加すると、生成されたレポートで変数の内容の前にその内容が表示されます。

周囲のテキストと共にインラインのテキストとして示す場合のモデル変数の名前と値の形式を設定するためのテキスト フォーマッタ。mlreportgen.dom.Text オブジェクトとして指定します。テキストの外観をカスタマイズするには、既定の mlreportgen.dom.Text オブジェクトのプロパティを変更するか、そのオブジェクトをカスタマイズした mlreportgen.dom.Text オブジェクトに置き換えます。既定または置き換えるテキスト オブジェクトに内容を追加すると、生成されたレポートで変数の内容の前にその内容が表示されます。

表示するテーブル列の最大数。正の整数として指定します。テーブルを使用した配列変数のレポートで、列の数が MaxCols プロパティの値よりも多い場合、テーブルは縦方向にスライス化されます。スライス化により、テーブルが複数のテーブルに分割されます。

属性:

GetAccess
public
SetAccess
public

データ型: int32

構造化されたオブジェクトまたは構造化されたオブジェクトの配列である変数でレポート対象とするレベルの最大数。非負の整数として指定します。DepthLimit の値以下のレベルは、一連の連結されたテーブルにフラット化されます (FormatPolicy プロパティを参照)。深さの制限を超えるレベルはレポートされません。DepthLimit プロパティを 0 に設定すると、構造化されたオブジェクトが展開されません。

属性:

GetAccess
public
SetAccess
public

データ型: int32

オブジェクト階層でレポート対象とするオブジェクトの最大数。正の整数として指定します。

属性:

GetAccess
public
SetAccess
public

データ型: int32

タイトルを含めるかどうか。true または false として指定します。タイトルには変数の名前とオプションでデータ型が含まれます。IncludeTitletrue の場合、タイトルが含まれます。既定では、タイトルには変数の名前のみが含まれます。変数のデータ型を含めるには、ShowDataType プロパティを true に設定します。

属性:

GetAccess
public
SetAccess
public

データ型: logical

レポート対象の変数のタイトル。文字ベクトル、string スカラー、mlreportgen.dom.Text オブジェクト、mlreportgen.dom.InternalLink オブジェクト、または mlreportgen.dom.ExternalLink オブジェクトとして指定します。

FormatPolicy プロパティが "Inline Text" に設定されている場合、Title プロパティの設定に応じて次のようになります。

  • DOM オブジェクトの場合、DOM オブジェクトで指定された形式は無視されます。

  • mlreportgen.dom.InternalLink または mlreportgen.dom.ExternalLink オブジェクトの場合、タイトルにリンク テキストが使用されますが、タイトルがリンクにはなりません。

どちらの場合も、タイトルの形式を設定するには、この ModelVariable レポーターの TextFormatter プロパティを使用します。

Title プロパティを指定しない場合、変数名がタイトルになります。

変数のデータ型をタイトルに表示するかどうか。true または false として指定します。

属性:

GetAccess
public
SetAccess
public

データ型: logical

空の値をもつプロパティを表示するかどうか。true または false として指定します。ShowEmptyValues プロパティは、MATLAB オブジェクト、Simulink オブジェクト、および Stateflow オブジェクトの変数にのみ適用されます。

属性:

GetAccess
public
SetAccess
public

データ型: logical

既定値を使用するプロパティを表示するかどうか。true または false として指定します。ShowDefaultValues プロパティは、MATLAB オブジェクト、Simulink オブジェクト、および Stateflow オブジェクトの変数にのみ適用されます。

属性:

GetAccess
public
SetAccess
public

データ型: logical

レポート対象のモデル変数のプロパティをレポートからフィルターを適用するための関数または式。関数は関数ハンドルとして指定します。式は文字ベクトルまたは string スカラーとして指定します。このプロパティは、オブジェクトを格納する変数にのみ適用されます。PropertyFilterFcn を指定しない場合、モデル変数のすべてのプロパティがレポートに含まれます。

関数ハンドルを指定する場合、関連付けられた関数は次を行う必要があります。

  • 次の引数を受け入れる。

    • variableName — レポート対象の変数の名前

    • variableObject — レポート対象の変数

    • propertyName — レポート対象の変数のプロパティの名前

  • レポートから指定されたプロパティにフィルターを適用するには true を返し、プロパティをレポートに含めるには false を返す。

たとえば、次のコードは、Simulink.Parameter オブジェクトの Description プロパティと Complexity プロパティを表示しないようにします。

import slreportgen.finder.*
import slreportgen.report.*

rpt = slreportgen.report.Report('modelvarrpt','pdf');

model_name = load_system('sldemo_mdlref_datamngt');


finder = slreportgen.finder.ModelVariableFinder(model_name);

while hasNext(finder)
    result = next(finder);
    varRptr = getReporter(result);
    varRptr.PropertyFilterFcn = @varPropertyFilter;
    add(rpt,varRptr);
end

close(rpt);

close_system(model_name);
rptview(rpt);

function tf = varPropertyFilter(~, variableObject,propertyName)
if isa(variableObject, 'Simulink.Parameter')
    tf = (propertyName == "Description") ||  ...
        (propertyName == "Complexity");
else
    tf = false;
end
end

string スカラーまたは文字ベクトルを指定する場合、式が含まれていなければなりません。その式は次のとおりです。

  • 変数 variableNamevariableObject、および propertyName を使用できる

  • レポートから指定されたプロパティにフィルターを適用するには変数 isFilteredtrue に設定し、レポートにプロパティを含めるには false に設定する必要がある

たとえば、次のコードは、Simulink.Parameter オブジェクトの CoderInfo プロパティをレポートからフィルターを適用します。

import slreportgen.finder.*
import slreportgen.report.*

rpt = slreportgen.report.Report('modelvarrpt','pdf');

model_name = load_system('sldemo_mdlref_datamngt');


finder = slreportgen.finder.ModelVariableFinder(model_name);

while hasNext(finder)
    result = next(finder);
    varRptr = getReporter(result);
    
    varRptr.PropertyFilterFcn = "isFiltered = " + ...
        "isa(variableObject, 'Simulink.Parameter') && " + ...
        "propertyName == 'CoderInfo';";
    add(rpt,varRptr);
end

close(rpt);

close_system(model_name);
rptview(rpt);

整数以外の数値の表示に使用する形式または精度。

形式は string スカラーまたは文字ベクトルとして指定します。sprintf のリファレンス ページで引数 formatSpec を参照してください。

精度は正の整数として指定します。num2str のリファレンス ページで引数 precision を参照してください。

例: "%.2f" は、double 値を小数点以下 2 桁まで表示します。

例: 2 は、最大有効桁数 2 桁まで表示します。

このレポーターのテンプレートのソース。以下のいずれかの方法で指定します。

  • このレポーターのテンプレートを含むファイルのパスを指定する、文字ベクトルまたは string スカラー

  • このレポーターが使用するテンプレートをもつか、このレポーター用のテンプレートを含むテンプレート ライブラリをもつ、レポーターまたはレポート

  • このレポーターが使用するテンプレートをもつか、このレポーター用のテンプレートを含むテンプレート ライブラリをもつ、ドキュメント オブジェクト モデル (DOM) のドキュメントまたはドキュメント パーツ

指定されるテンプレートは、このレポートが追加されるレポーターと同じタイプでなければなりません。たとえば、Microsoft® Word レポートの場合、TemplateSrc は Word レポーター テンプレートでなければなりません。TemplateSrc プロパティが空の場合、このレポーターはレポートの出力タイプで既定のレポーター テンプレートを使用します。

属性:

GetAccess
public
SetAccess
public
NonCopyable
true

このレポーター テンプレートの名前。文字ベクトルまたは string スカラーとして指定します。このレポーター テンプレートは、このレポーターの TemplateSrc プロパティで指定されたテンプレートのテンプレート ライブラリになければなりません。

属性:

GetAccess
public
SetAccess
public

データ型: char | string

このレポーターのハイパーリンク ターゲット。リンク ターゲット ID を指定する文字ベクトルまたは string スカラー、あるいは mlreportgen.dom.LinkTarget オブジェクトとして指定します。文字ベクトルまたは string スカラーの値は LinkTarget オブジェクトに変換されます。リンク ターゲットは、出力レポートでこのレポーターのコンテンツの直前に配置されます。

属性:

GetAccess
public
SetAccess
public

メソッド

すべて展開する

すべて折りたたむ

検索結果を反復処理し、結果ごとにモデル変数レポーターのプロパティを設定することで、レポートにおけるモデル変数の書式設定をカスタマイズします。

レポートを作成します。

rpt = slreportgen.report.Report("MyReport","pdf");

章を作成します。

chapter = mlreportgen.report.Chapter();
chapter.Title = "Model Variable Reporter Example";

モデルを読み込みます。

model_name = "sf_car";
load_system(model_name);

モデル内の変数を検索します。

finder = slreportgen.finder.ModelVariableFinder(model_name);

結果ごとに、その結果の ModelVariable レポートを取得し、数値の書式設定をカスタマイズして、レポーターを章に追加します。

while hasNext(finder)
    result = next(finder);
    reporter = getReporter(result);
    reporter.NumericFormat = "%.4f";    
    add(chapter,reporter);
end

章をレポートに追加します。

add(rpt,chapter);

レポートを閉じ、ビューアーを開きます。

close(rpt);
rptview(rpt);

以下を含むレポートを生成します。

  • モデル変数についての章

  • モデルの各ブロック線図についてのブロック線図のブロックの節を含む章

モデル変数の [次で使用] のリストにあるブロック名は、それぞれのブロックについてレポートされた対応する内容へのハイパーリンクになります。

% Create a Report
rpt = slreportgen.report.Report("MyReport","pdf");

% Load the model
model_name = "sf_car";
load_system(model_name);

% Create a Chapter for the Variables
chapter = mlreportgen.report.Chapter();
chapter.Title = "Model Variable Report for the "+model_name+" model";

% Find the variables in the model
finder = slreportgen.finder.ModelVariableFinder(model_name);

% Report on the variables
while hasNext(finder)
    result = next(finder);
    reporter = getReporter(result);
    add(chapter,reporter);
end
add(rpt,chapter);

% Add diagrams to the report
finder = slreportgen.finder.DiagramFinder(model_name);
while hasNext(finder)
    result = next(finder);
    ch = mlreportgen.report.Chapter(result.Name);
    add(ch, result);
    % Add a section for the blocks in the diagram
    sect = mlreportgen.report.Section("Title","Blocks");
    blFinder = slreportgen.finder.BlockFinder(result.Object);
    while hasNext(blFinder)
        blockresult = next(blFinder);
        add(sect,blockresult);
    end
    add(ch,sect);
    add(rpt, ch);
end

% Close and view the report
close(rpt);
rptview(rpt);
close_system(model_name);

バージョン履歴

R2019b で導入