查找器和报告器减少了编写在Simulink上查找和报告的代码所需的时间和复杂性金宝app®模型元素,例如图和块,以及Stateflow®图表和过渡等等。的金宝appSimulink Report Generator™报表API是DOM API之上的一层。它的查找器和报告器基于Simulink和Stateflow查找基类。金宝app您指定要在其中查找特定元素的容器,例如子系统中的块或图表中的状态。查找器对象以相应的查找器结果对象数组返回它们的结果。
Simu金宝applink Report API还包括报告器类,它们返回容器的图像。此图像是模型的顶层。
查找器返回的每个结果对象都有一个关联的报告器对象,该对象报告那些结果。报告器对象保存内容并对内容进行格式化,例如属性表和数据图。将报表对象添加到报表中。使用MATLAB®报告API报告器用于定义通用的报告元素。看到记者是什么?获取信息。
所有查找器和报告器都具有以下特点:
默认行为和值
允许重写和定制它们的输出
所有发现者都有找到
,hasNext
,下一个
方法。的找到
方法查找并在结果对象数组中返回所找到的每个指定类型元素的所有元素。的hasNext
而且下一个
方法每次查找并返回一个元素,并用于遍历结果列表。的hasNext
方法检查容器是否至少有一个指定类型的元素。如果容器具有一个或多个元素,则hasNext
方法对其进行队列下一个
方法来查找并作为结果对象返回。
所有记者都有预定义的模板。每个报告的模板定义了它的格式、布局和内容孔。除非需要定制报表,否则不需要更改模板或指定任何格式、布局或孔。您可以通过复制和编辑报表的默认模板或使用新模板来定制报表。编辑默认模板的副本可以为定制模板提供一个起点和结构。使用新模板可以让您从一个空白文件开始完全定义模板。若要更改报表内容的顺序,请重新排列模板中的孔。查找器不使用模板。定制报告器类的另一种方法是子类化它。
每种输出类型的默认报告模板都在模板库中,该模板库位于
matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ @ <记者> \ \ templates \资源输出> <
DiagramReporter
PDF格式的输出matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ \ \ pdf模板\ default.pdftx @DiagramReporter \资源
Simu金宝applink Report API提供了这些查找器、结果和报告器类。若要在报表生成器程序中使用这些类,必须创建类型的容器slreportgen.report.Report
保存报告。
对象中的所有Simulink块进行查找和报告金宝appslrgex_vdp
使用BlockFinder
类。生成的HTML报告包含默认信息,并对每个块使用默认格式。
导入Report API包,它允许您使用类名而不包括它们的包名。例如,你可以使用BlockFinder
而不是slreportgen.finder.BlockFinder
.除了导入Simulink Report API基类外,还需金宝app要导入MATLAB Report API基类。典型的报表包括标题页、目录、章节和节,这些都是作为报表类包含在MATLAB report API中的。
进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*
加载slrgex_vdp
模型。
model_name =“slrgex_vdp”;load_system (model_name)
创建容器对象以保存报表并打开报表。在这种情况下,输出报告以压缩格式保存slrgex_vdp_model.htmx
HTML报告。您可以使用任何您想要的输出名称。如果使用相同的输出文件名多次运行报表生成器,则输出文件将被覆盖。若要在报表生成金宝app器程序中使用Simulink Report API查找器和报告器,必须使用完全限定名来创建容器对象。
rpt = slreportgen.report.Report(“slrgex_vdp_model”,“html”);打开(rpt)
添加一个章节并指定它的标题。
ch =章节(“slrgex_vdp模型中的块”);
使用BlockFinder
类来创建查找器。在这种情况下,BlockFinder
找到模型中的所有块。使用找到
方法查找查找程序指定的块。
查找器= BlockFinder(model_name);结果= find(finder);
遍历find方法的结果,为每个块创建一个节,并将块属性表添加到节中。然后,将每个部分添加到章节中。添加完所有块后,将章节添加到报告中。
为Section = Section(“标题”, result.Name);append(教派,结果)追加(ch,教派)结束追加(rpt, ch);
关闭报表和模型,并查看报表。
关闭(rpt);close_system (model_name);rptview (rpt);
完整的程序是
进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*model_name =“slrgex_vdp”;load_system (model_name);rpt = slreportgen.report.Report(“slrgex_vdp_model”,“html”);open(rpt) ch = Chapter(“slrgex_vdp模型中的块”);查找器= BlockFinder(model_name);结果= find(finder);为Section = Section(“标题”, result.Name);追加(教派,结果)追加(ch,教派);结束追加(rpt, ch);Close (rpt) close_system(model_name) rptview(rpt)
结果报告的前两个块的章节标题、节标题和属性表显示出来。
创建一个PDF报告生成器,用于查找slrgex_radar_eml
模型。
要查找所有块,请使用BlockFinder
.的如果
语句说明如何进行测试MATLAB函数块。使用MATLABFunction
记者报道MATLAB函数块的细节。的其他的
语句显示块如何除MATLAB函数块使用BlockFinder
找到
方法的结果。
blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);if slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);sec = Section(blks(i).Name);追加(sec,rptr)追加(ch,sec) else sec = Section(blks(i).Name);追加(sec,黑色(我)追加(ch, sec)
blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);
完整的程序是
进口slreportgen.report。*导入slreportgen.finder。导入mlreportgen.report。* model_name = 'slrgex_radar_eml';load_system(model_name) rpt = slreportgen.report.Report('雷达','pdf');open(rpt) blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);ch = Chapter(' block in slrgex_radar_eml Model');如果slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);sec = Section(blks(i).Name);追加(sec,rptr)追加(ch,sec) else sec = Section(blks(i).Name); append(sec,blks(i)) append(ch,sec) end end append(rpt,ch) close(rpt) close_system(model_name) rptview(rpt)
的信息报告示例MATLAB函数街区MATLABFunction
记者:
所报告的信息的示例找到
方法BlockFinder
是:
此示例描述如何查找和报告状态流状态、转换和连接。它报道了control_logic
图表slrgex_fuelsys_fuel_rate_control
模型。
这部分代码使用了StateFinder
对象及其找到
方法查找并报告图表中的状态。它循环遍历已找到的状态数组,并将每个状态添加到章节中。
stFinder = statfinder (subsys);state = find(stFinder);为状态=状态追加(章节,状态)结束append (rpt)章
要报告转换,请使用StateflowDiagramElementFinder
对象及其找到
方法。若要显示比默认宽度更窄的属性表,请自定义输出。首先,获取结果的报告器。要设置宽度,请使用TableWidth
记者的财产。
章节=章节“标题”,“转换”);trFinder = StateflowDiagramElementFinder...(“容器”、中高“类型”,“过渡”);transition = find(trFinder);为rptr = transition. getreporter;rptr.PropertyTable.TableWidth =“3”;追加(章,rptr)结束append (rpt)章
完整的程序如下
进口mlreportgen.report。*进口slreportgen.report。*进口slreportgen.finder。*model_name =“slrgex_fuelsys_fuel_rate_control”;load_system (model_name);中高=“slrgex_fuelsys_fuel_rate_control / control_logic”;rpt = slreportgen.report.Report(“输出”,“pdf”);打开(rpt) tp = TitlePage(“标题”,...slrgex_fuelsys_fuel_rate_control控制逻辑图);追加(rpt, tp)追加(rpt, TableOfContents);章节=章节“标题”,“州”);stFinder = statfinder (subsys);state = find(stFinder);为状态=状态追加(章节,状态)结束append(rpt,chapter) chapter = chapter (“标题”,“转换”);trFinder = StateflowDiagramElementFinder...(“容器”、中高“类型”,“过渡”);transition = find(trFinder);为rptr = transition. getreporter;rptr.PropertyTable.TableWidth =“3”;追加(章,rptr)结束追加(rpt,章节)关闭(rpt) close_system(model_name) rptview(rpt)