查找器和报告器减少了在Simulink上编写查找和报告代码所需的时间和复杂性万博1manbetx®模型元素,如图和块,以及状态流®图表和过渡等等。的万博1manbetx仿真软件报告生成器™报表API是DOM API之上的一层。其查找器和报告器基于Simulink和Stateflow find基类。您可以指定在其中查找特定元素的容器,例如子系统中的块或图表中的状态万博1manbetx。查找器对象在相应的查找器结果对象数组中返回其结果。
Simu万博1manbetxlink Report API还包括报告器类,它返回容器的图像。这个图像是模型的顶层。
finder返回的每个结果对象都有一个关联的reporter对象,该对象报告这些结果。reporter对象保存内容并格式化内容,如属性表和数据图。您可以将reporter对象添加到报告中。使用MATLAB®报表API报告定义公共报表元素。看到什么是记者?获取信息。
所有发现者和记者都有以下特点:
默认行为和值
允许重写和自定义其输出
所有的发现者发现
,hasNext
和下一个
方法发现
方法查找并在结果对象数组中返回所找到的指定类型的每个元素的所有元素。的hasNext
和下一个
方法一次查找并返回一个元素,并用于迭代结果列表。这个hasNext
方法检查容器是否至少有一个指定类型的元素。如果容器有一个或多个元素,则hasNext
方法将其排队等待下一个
方法查找并作为结果对象返回。
所有报告器都有预定义的模板。每个报告器的模板定义其格式、布局和内容孔。除非需要自定义报告,否则无需更改模板或指定任何格式、布局或孔。您可以通过复制和编辑其默认模板或使用新模板来自定义报告。Editing默认模板的副本为您提供了自定义模板的起点和结构。使用新模板可以从空白文件开始完全定义模板。若要更改报表内容的顺序,请对模板中的孔重新排序。查找者不使用模板。自定义reporter cla的另一种方法是类是通过子类化来实现的。
每个输出类型的默认报告器模板都位于模板库中
matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\+report\@\resources\templates\
DiagramReporter
PDF输出的matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\+report\@diagramforter\resources\templates\pdf\default.pdftx
Simu万博1manbetxlink Report API提供了这些查找器、结果和报告类。要在报表生成程序中使用这些类,必须创建类型为的容器slreportgen.report.Report
保存报告。
报表API类 | 描述 |
---|---|
slreportgen.finder.AnnotationFinder |
查找Simu万博1manbetxlink框图批注。 |
slreportgen.finder.BlockFinder |
在Simulink框图中查找块。万博1manbetx |
slreportgen.finder.BlockResult |
包含由拦截器 对象 |
slreportgen.finder.ChartDiagramFinder |
在模型中查找状态流图。 |
slreportgen.finder.DataDictionaryFinder |
查找Simu万博1manbetxlink数据字典。 |
slreportgen.finder.DataDictionaryResult |
包含由DataDictionary 对象 |
slreportgen.finder.DiagrameElementFinder |
查找Simulink块图或状态流程图的元万博1manbetx素。 |
slreportgen.finder.DiagramElementResult |
包含由DiagramElementFinder 对象 |
slreportgen.finder.DiagramFinder |
在Simulink模型中查找框图和图表。万博1manbetx |
slreportgen.finder.DiagramResult |
包含由图解查找器 对象 |
slreportgen.finder.ModelVariableFinder |
查找Simulink模型使用的变量。万博1manbetx |
slreportgen.finder.ModelVariableResult |
包含由找到的模型变量模型变量查找器 对象 |
slreportgen.finder.SignalFinder |
查找模型或块使用的信号。 |
slreportgen.finder.SignalResult |
包含一个由SignalFinder 对象 |
slreportgen.finder.StateFinder |
在状态流图中查找状态。 |
slreportgen.finder.StateFlowDiagrameElementFinder |
查找状态流程图的元素。 |
slreportgen.finder.SystemDiagramFinder |
在Simulink模型中查找系统框图。万博1manbetx |
控件中的所有Simulink块如何查找和报告万博1manbetxvdp
使用拦截器
班生成的HTML报告包含默认信息,并对每个块使用默认格式。
导入Report API包,它允许您使用类名而不包括它们的包名。例如,你可以用拦截器
而不是slreportgen.finder.BlockFinder
. 除了导入Simulink报表API基类外,还导入MATLA万博1manbetxB报表API基类。一个典型的报告包括一个标题页、目录、章节和章节,您可以将其作为报告器类包含在MATLAB报告API中。
进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*
加载vdp
模型
model_name =“vdp”;load_system (model_name)
创建容器对象以保存报告并打开报告。在这种情况下,输出报告保存为压缩格式vdp_model.htmx
HTML报表。您可以使用任何想要的输出名称。如果使用同一输出文件名多次运行报表生成器,则会覆盖输出文件。若要在报表生成器程序中使用Simulink报表API查找器和报告器,必须使用完全限定名创建容器对象。万博1manbetx
rpt=slreportgen.report.report('vdp_model','html');公开(rpt)
添加章节并指定其标题。
ch=章节(“Simulink vdp模型中的块万博1manbetx”);
使用拦截器
类创建查找程序。在这种情况下拦截器
查找模型中的所有块。使用发现
方法来查找查找器指定的块。
仪= BlockFinder (model_name);结果=找到(仪);
循环使用find方法的结果,为每个块创建一个部分,并将块特性表添加到该部分。然后,将每个部分添加到章节中。添加所有块后,将章节添加到报告中。
for result = results sect = Section('Title',result. name);Append (sect,result) Append (ch,sect) end Append (rpt,ch);
关闭报表和模型,并查看报表。
关闭(rpt);关闭系统(型号名称);rptview(rpt);
完整的程序是
导入slreportgen.finder.*导入slreportgen.report.*导入mlreportgen.report.*model_name='vdp';加载系统(型号名称);rpt=slreportgen.report.report('vdp_model','html');打开(rpt)ch=章节(“Simulink vdp模型中的块”);finder=BlockFinder(型号名称);结果=查找(查找器);对于万博1manbetxresult=results sect=Section('Title',result.Name);追加(sect,result)追加(ch,sect);末端附加(rpt,ch);关闭(rpt)关闭系统(型号名称)rpt视图(rpt)
结果报告前两个区块的章节标题、章节标题和属性表如下所示。
创建一个PDF报告生成器,用于查找雷达
模型
要查找所有块,请使用拦截器
这个如果
语句显示了如何测试MATLAB函数块。使用MATLABFunction
记者报道MATLAB函数块的细节。的其他的
语句显示了如何阻塞除MATLAB函数块使用拦截器
发现
方法结果。
blkfinder=BlockFinder(型号名称);blks=find(blkfinder);如果slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);秒=节(黑色(i) . name);append(sec,rptr) else sec = Section(blks(i).Name);追加(sec,黑色(我)追加(ch, sec)
blkfinder=BlockFinder(型号名称);blks=find(blkfinder);
完整的程序是
导入slreportgen.report.*导入slreportgen.finder.*导入mlreportgen.report.*model_name='sldemo_radar_eml';load_system(model_name)rpt=slreportgen.report.report('radar','pdf');open(rpt)blkfinder=BlockFinder(model_name);blks=find(blkfinder);ch=Chapter('sldemo_radar_eml model中的块');i=1:长度(blks)如果slreportgen.utils.isMATLABFunction(blks(i).Object)rptr=MATLABFunction(blks(i).Object);sec=Section(blks(i).Name);append(sec,rptr)append(ch,sec)append(ch)否则sec=Section(blks(i).Name);append(sec,blks(i))append(ch,sec)end append(rpt)close(rpt)close_系统(model_Name)rptview(rpt)
一个例子的信息报告MATLAB函数块的MATLABFunction
记者是
的信息报告的一个例子发现
的方法拦截器
是
此示例描述如何查找和报告状态流状态、转换和连接control_logic
海图SLU燃料系统
模型
这部分代码使用国家发现者
及其发现
方法查找和报告图表中的状态。它循环查找到的状态数组,并将每个状态添加到章节中。
stFinder=状态查找器(子系统);状态=查找(stFinder);对于州=州附加(章节,州)结束附加(rpt,章节)
要报告转换,请使用StateflowDiagramElementFinder
及其发现
方法。若要显示比默认宽度更窄的属性表,请自定义输出。首先,获得记者的结果。要设置宽度,请使用桌面宽度
记者的财产。
章节=章节(“标题”,“过渡”);trFinder=StateFlowDiagrameElementFinder。。。('Container',subsys,'Types','transition');转换=查找(trFinder);对于transition=transitions rptr=transition.getReporter;rptr.PropertyTable.TableWidth='3in';附加(章节,rptr)结束附加(rpt,章节)
完整的程序是
导入mlreportgen.report.*导入slreportgen.report.*导入slreportgen.finder.*model_name='sldemo_fuelsys';加载系统(型号名称);subsys=strcat(型号名称,“/燃油率控制/控制逻辑”);rpt=slreportgen.report.report('output','pdf');open(rpt)tp=标题页(‘标题’,…‘sldemo_fuelsys的控制逻辑图’);附加(rpt,tp)附加(rpt,目录);章节=章节(“标题”,“州”);stFinder=状态查找器(子系统);状态=查找(stFinder);州=州附加(章节,州)结束附加(rpt,章节)章节=章节(“标题”,“过渡”);trFinder=StateFlowDiagrameElementFinder。。。('Container',subsys,'Types','transition');转换=查找(trFinder);对于transition=transitions rptr=transition.getReporter;rptr.PropertyTable.TableWidth='3in';附加(章,rptr)结束附加(章,rpt)关闭(rpt)关闭系统(型号名称)rptview(rpt)