主要内容

本页采用了机器翻译。点击此处可查看英文原文。

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 对象的 findnext 方法获取找到的变量的 slreportgen.finder.ModelVariableResult 对象。

  • 调用 slreportgen.finder.ModelVariableResult 对象的 getReporter 方法获取 slreportgen.report.ModelVariable 对象。

您可以通过设置 slreportgen.report.ModelVariable 对象的属性来自定义模型变量的报告。

属性

全部展开

与要报告的变量相对应的 Simulink.VariableUsage 对象。该对象包含变量的名称、变量的来源以及使用该变量的模块。此属性为只读属性。

设置变量值的 Model 模块的路径,指定为字符向量。

假设引用模型使用模型参量来设置模块参数值。如果模型具有所引用模型的多个实例,则模型变量查找器将返回与模型参量相关联的变量的多个实例。ModelBlockPath 属性通过提供设置其值的模型模块的路径来唯一标识变量的实例。如果变量与引用模型中的模型参量没有关联,则 ModelBockPath 为空。有关引用模型和特定于实例的参数的详细信息,请参阅 为引用模型中的模块参数配置特定于实例的值

是否包含使用此变量的模块列表,指定为 truefalse。如果 FormatPolicy 属性的值为 "Inline Text",则无论 ShowUsedBy 属性的值是什么,模块列表都不会包含在报告中。

如果报告包含“使用者”列表中某个模块的报告内容,则点击该模块的超链接即可转到该内容。请参阅生成模型变量、图和模块的报告

是否包含解析变量的工作区,指定为 truefalse。如果 FormatPolicy 属性的值为 "Inline Text",则工作区不会包含在报告中,无论 ShowWorkspaceInfo 属性的值是什么。

列表格式化程序,用于格式化使用变量的模块列表,指定为 mlreportgen.dom.UnorderedList 对象或 mlreportgen.dom.OrderedList 对象。该属性的默认值是 mlreportgen.dom.UnorderedList 的对象。要自定义列表的格式,请修改列表对象属性或将列表对象替换为不包含列表项的自定义列表对象。

变量值的格式,指定为以下字符串或字符向量之一:

  • "Auto" - 根据值的数据类型将变量值格式化为表格或段落。

    格式化为表格的数据类型包括:

    • 元胞数组

    • 逻辑数组

    • 数值数组

    • MATLAB®

    • Simulink 对象

    • Stateflow® 对象

    • 图形对象

    • MATLAB 结构体或结构体数组

    • MATLAB 对象或对象数组

    格式化为段落的数据类型包括:

    • 元胞向量

    • 逻辑标量或向量

    • 数值标量或向量

    • 字符或字符数组

    • 字符串

    • MATLAB 结构体向量

    • MATLAB 对象向量

  • "Table" - 以表格形式格式化变量值。默认以段落形式出现的变量被格式化为表格条目。作为层次结构对象的变量(例如 MATLAB 结构、MATLAB 对象、Simulink 对象、Stateflow 对象或图形对象)可以具有本身就是对象的属性。在这种情况下,层次结构变得扁平,并且属性值显示为指向该对象属性表的超链接。对象属性表还具有指向原始表的超链接。

  • "Paragraph" - 将变量值格式化为段落。默认情况下格式化为表格的变量将被展平并格式化为段落。

  • "Inline Text" - 将变量格式化为与周围文本一致。

属性:

GetAccess
公共
SetAccess
公共

数据类型: char | string

表格报告器用于格式化变量的值,指定为 mlreportgen.report.BaseTable 对象。该属性的默认值是 BaseTable 对象,其 TableStyleName 属性设置为 ModelVariableTable 样式,该样式在 ModelVariable 报告器的默认模板中定义。

要自定义表格的外观,请修改默认表格报告器的属性或将其替换为自定义的表格报告器。如果您向默认或自定义表格报告器的 Title 属性添加内容,则该内容将显示在生成的报告中的表格标题前面。

段落格式化程序用于格式化模型变量的值,指定为 mlreportgen.dom.Paragraph 对象。该属性的默认值是 BaseTable 对象,其 TableStyleName 属性设置为 ModelVariableParagraph 样式,该样式在 ModelVariable 报告器的默认模板中定义。

要自定义段落的外观,请修改 mlreportgen.dom.Paragraph 对象的属性或将该对象替换为自定义的 mlreportgen.dom.Paragraph 对象。如果向默认或替换段落对象添加内容,则该内容会出现在生成的报告中的变量内容前面。

文本格式化程序,用于在文本与周围文本一致时格式化模型变量的名称和值,指定为 mlreportgen.dom.Text 对象。要自定义文本的外观,请修改默认 mlreportgen.dom.Text 对象的属性或将该对象替换为自定义的 mlreportgen.dom.Text 对象。如果向默认或替换文本对象添加内容,则该内容会出现在生成的报告中的变量内容前面。

要显示的最大表列数,指定为正整数。对于使用表报告的数组变量,如果列数大于 MaxCols 属性的值,则对表进行垂直切片。切片将表分成多个表。

属性:

GetAccess
公共
SetAccess
公共

数据类型: int32

对于结构化对象或结构化对象数组的变量,要报告的最大级别数,指定为非负整数。小于或等于 DepthLimit 值的级别将被展平为一系列相互链接的表(请参阅 FormatPolicy 属性)。不会报告超过深度限制的水平。如果将 DepthLimit 属性设置为 0,则结构化对象不会扩展。

属性:

GetAccess
公共
SetAccess
公共

数据类型: int32

要报告的对象层次结构中的最大对象数,指定为正整数。

属性:

GetAccess
公共
SetAccess
公共

数据类型: int32

是否包含标题,指定为 truefalse。标题包含变量名称和可选的数据类型。如果 IncludeTitletrue,则包含标题。默认情况下,标题仅包含变量的名称。要包含变量的数据类型,请将 ShowDataType 属性设置为 true

属性:

GetAccess
公共
SetAccess
公共

数据类型: logical

要报告的变量的标题,指定为字符向量、字符串标量、mlreportgen.dom.Text 对象、mlreportgen.dom.InternalLink 对象或 mlreportgen.dom.ExternalLink 对象。

如果将 FormatPolicy 属性设置为 "Inline Text" 并且将 Title 属性设置为:

  • DOM 对象,DOM 对象指定的格式被忽略

  • mlreportgen.dom.InternalLinkmlreportgen.dom.ExternalLink 对象,链接文本用于标题,但标题不是链接

在这两种情况下,要格式化标题,请使用此 ModelVariable 报告器的 TextFormatter 属性。

如果不指定 Title 属性,则标题就是变量名称。

是否在标题中显示变量的数据类型,指定为 truefalse

属性:

GetAccess
公共
SetAccess
公共

数据类型: logical

是否显示具有空值的属性,指定为 truefalseShowEmptyValues 属性仅适用于 MATLAB 对象、Simulink 对象和 Stateflow 对象变量。

属性:

GetAccess
公共
SetAccess
公共

数据类型: logical

是否显示使用默认值的属性,指定为 truefalseShowDefaultValues 属性仅适用于 MATLAB 对象、Simulink 对象和 Stateflow 对象变量。

属性:

GetAccess
公共
SetAccess
公共

数据类型: logical

用于从报告中过滤报告的模型变量的属性的函数或表达式。指定一个函数作为函数句柄。指定一个表达式作为字符向量或字符串标量。此属性仅适用于包含对象的变量。如果不提供 PropertyFilterFcn,则模型变量的所有属性都将包含在报告中。

如果提供函数句柄,则关联函数必须:

  • 接受以下参量:

    • variableName - 正在报告的变量的名称

    • variableObject - 被报告的变量

    • propertyName - 正在报告的变量的属性名称

  • 返回 true 以从报告中过滤指定属性,或返回 false 以将该属性包含在报告中。

例如,此代码阻止显示 Simulink.Parameter 对象的 DescriptionComplexity 属性。

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

如果您提供字符串标量或字符向量,它必须包含表达式。表达式:

  • 可以使用变量 variableNamevariableObjectpropertyName

  • 必须将变量 isFiltered 设置为 true 才能从报告中过滤指定的属性,或者将变量设置为 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);

用于显示非整数数值的格式或精度。

将格式指定为字符串标量或字符向量。请参阅 sprintf 引用页面上的 formatSpec 参量。

将精度指定为正整数。请参阅 num2str 引用页面上的 precision 参量。

示例: "%.2f" 显示小数点右边有两位数字的双精度值。

示例: 2 显示最多两位有效数字。

此报告器的模板来源,以下列方式之一指定:

  • 字符向量或字符串标量,指定包含此报告器模板的文件的路径

  • 此报告器使用的模板或其模板库中包含此报告器模板的报告器或报告

  • 文档对象模型 (DOM) 文档或文档部分,该报告器使用其模板或其模板库包含该报告器的模板

指定的模板必须与您附加此报告器的报告类型相同。例如,对于 Microsoft® Word 报告,TemplateSrc 必须是 Word 报告模板。如果 TemplateSrc 属性为空,则此报告器将使用默认报告器模板作为报告的输出类型。

属性:

GetAccess
公共
SetAccess
公共
NonCopyable
true

此报告器的模板名称,指定为字符向量或字符串标量。此报告器的模板必须位于此报告器 TemplateSrc 属性所指定模板的模板库中。

属性:

GetAccess
公共
SetAccess
公共

数据类型: char | string

此报告器的超链接目标,指定为指定链接目标 ID 的字符向量或字符串标量,或 mlreportgen.dom.LinkTarget 对象。字符向量或字符串标量值转换为 LinkTarget 对象。链接目标紧接在输出报告中此报告器的内容之前。

属性:

GetAccess
公共
SetAccess
公共

方法

全部展开

示例

全部折叠

通过遍历搜索结果并为每个结果设置模型变量报告器的属性来自定义报告中模型变量的格式。

创建报告。

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 中推出