主要内容

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

关于 MATLAB 函数的报告

报告 API 提供了多种方式来报告 Simulink® MATLAB® Function 模块和 Stateflow® MATLAB 函数。要报告详细信息,请使用 slreportgen.report.MATLABFunction 报告器。该报告器报告属性、参量、函数代码、函数符号和支持函数。

报告 MATLAB Function 模块或 Stateflow MATLAB 函数的其他方法是分别使用 SimulinkObjectPropertiesStateflowObjectProperties 报告器。但是,这些报告器不提供函数代码格式或报告函数符号、支持函数或参量。如果您仅想要属性信息,请使用这些报告器。

报告 API 提供了查找器,用于在整个模型或图中查找模块和 Stateflow 元素,包括 MATLAB 函数。这些查找器是 BlockFinderDiagramElementFinderStateflowDiagramElementFinder

这些示例展示了如何在报告生成器程序中使用查找器。如果您知道 MATLAB 函数的句柄或路径,则不需要使用查找器(请参阅 slreportgen.report.MATLABFunction 了解示例)。

查找并报告 MATLAB Function 模块

使用报告 API 查找器和 slreportgen.report.MATLABFunction 报告器来报告 MATLAB Function 模块。

导入报告和查找器命名空间,这样您就不必使用完全限定的类名。

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

model_name = "SpiralGalaxyRptGenExample";
load_system(model_name);
rpt = slreportgen.report.Report;

使用 BlockFinder 查找所有子系统类型的模块,其中包括 MATLAB Function 模块。如果您搜索所有模块类型,则与将搜索限制为 BlockFinder 模块类型相比,SubSystem 可能需要更多时间才能返回结果。

blkfinder = BlockFinder(model_name);
blkfinder.BlockTypes = "SubSystem";
blks = find(blkfinder);

循环返回的 SubSystem 块来测试该模块是否是 MATLAB Function 模块。为每个 MATLAB Function 模块创建一个 MATLABFunction 报告器,设置所需的属性,并将每个结果添加到报告中。

for i=1:length(blks)
   block = blks(i).Object;
   if slreportgen.utils.isMATLABFunction(block)
      rptr = MATLABFunction(block);
      rptr.IncludeArgumentProperties = true;
      add(rpt,rptr);
   end
end

关闭报告和模型。

close(rpt);
close_system(model_name);
rptview(rpt);

该图显示了 MATLAB Function 模块之一的报告输出节。它显示模块属性表、其中一个参量的摘要表和部分函数脚本。在实际输出中,所有参量表都出现在函数脚本之前。

mlfunction_reporter_topic_ex1.png

查找并报告 Stateflow MATLAB Function

此示例展示了如何使用 StateflowDiagramElementFinderslreportgen.report.MATLABFunction 报告器查找并报告 Stateflow MATLAB 函数。

导入报告和查找器命名空间,这样您就不必使用完全限定的类名。

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

打开模型。

model_name = "sf_bus_operations";
load_system(model_name);
chart_name = "sf_bus_operations/Chart";
rpt = slreportgen.report.Report;

使用 StateflowDiagramElementFinder 查找所有类型为 emfunction 的模块。如果您搜索所有类型的图,StateflowDiagramElementFinder 可能需要更长时间才能返回结果,而如果将搜索范围限制为特定类型的图,则返回速度会更快。

elemfinder = StateflowDiagramElementFinder(chart_name);
elemfinder.Types = "emfunction";
elems = find(elemfinder);

遍历返回的 MATLAB 函数。为每个 MATLAB 函数创建一个 MATLABFunction 报告器,并将其添加到报告中。

for i = 1:length(elems)
   rptr = MATLABFunction(elems(i).Object);
   add(rpt,rptr);
end

关闭并显示报告。

close(rpt);
close_system(model_name);
rptview(rpt);

该图显示 MATLAB Function 模块的报告输出的一部分。

Snippet of report output showing the object properties table, the argument summary, and a portion of the function script.

自定义 MATLAB 函数报告器输出

您可以按照自定义任何报告或报告器的方式自定义 MATLAB 函数报告器的输出:

  • 使用 DOM 类 - 使用 DOM 类(例如 mlreportgen.dom.Paragraph 指定格式,并在程序中使用它们。例如,此代码设置函数脚本的外观。

    rptr = slreportgen.report.MATLABFunction;
    paraScript = mlreportgen.dom.Paragraph;
    paraScript.FontFamilyName = "Arial";
    paraScript.FontSize = "12pt";
    paraScript.Color = "blue";
    rptr.FunctionScript = paraScript;

  • 编辑默认模板的副本 - 在新模板中保存自定义设置的优点在于,您可以通过将该模板用于另一个报告生成器程序轻松地重用这些自定义设置。MATLABFunction 报告器的模板和样式表位于 matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\+report\@MATLABFunction\resources\templatesMATLABFunction 中。

    此示例显示复制和编辑 MATLABFunction 报告器 html 模板的步骤。

    1. 创建默认 html 模板的副本。在此示例中,模板包在当前工作文件夹中保存为 myHTMLTemplate.htmtx

      mfunction = slreportgen.report.MATLABFunction;
      mfunction.createTemplate("myHTMLTemplate","html");

    2. 解压缩模板包。解压后的模板包里面是一个包含文档、样式表、图片文件的文件夹。在此示例中,模板包文件夹保存到当前工作文件夹。

      unzipTemplate("myHTMLTemplate.htmtx");
    3. stylesheets 文件夹中,在文本编辑器中打开 root.css 文件。root.css 文件包含 MATLABFunction 报告器的默认样式。该文件的开头和第一个样式是:

      /******************************************************************

      * MATLABFunction Reporter

      ******************************************************************/

      /* Default style for the MATLAB function script title */

      .MATLABFunctionFunctionScriptTitle {

      font-family:“Noto Sans”、“Noto Sans CJK JP”、“Noto Sans CJK SC”、“Noto Sans CJK KR”;

      font-weight: bold;

      margin-top:10pt;

      color: black;

      white-space: pre;

      }

    4. 根据需要编辑样式。在此示例中,函数脚本标题上方的上边距增加到 20 磅,并且标题颜色变为蓝色。

      /******************************************************************

      MATLABFunction Reporter

      ******************************************************************/

      /* Default style for the MATLAB function script title */

      .MATLABFunctionFunctionScriptTitle {

      font-family:“Noto Sans”、“Noto Sans CJK JP”、“Noto Sans CJK SC”、“Noto Sans CJK KR”;

      font-weight: bold;

      margin-top:12pt;

      color: blue;

      white-space: pre;

      }

    5. 保存文件。

    6. 将模板文件夹压缩成模板包。对于此示例,模板包是 myHTMLTemplate.htmtx

      zipTemplate("myHTMLTemplate");

    7. 在报告生成器程序中,要使用已保存的模板,请指定模板源。

      mfunction.TemplateSrc = "myHTMLTemplate";

    请参阅DOM API 报告程序模板以了解更多信息。

另请参阅

| | | | | |