以交互方式创建 Simulink Report Generator 报告
此示例显示如何使用报告资源管理器设计报告设置文件并生成执行以下操作的报告:
打开范德波尔方程的 Simulink® 模型,称为
slrgex_vdp
模型。将 Mu 模块的增益参数设置为五个不同的值。
每次设置增益参数时仿真模型。
收集结果。在指定范围内的结果将显示在生成的报告的表格中。
您不需要了解 MATLAB® 或 Simulink 软件来创建和运行此示例报告。但是,了解这些产品将有助于您理解执行的 MATLAB 代码和模型仿真。
运行以下命令访问本示例中使用的支持文件。
openExample('rptgenext/SimulinkReportGeneratorFilesExample');
要创建此报告,请执行以下主要任务:
此示例包括针对不同类型的报告创建和生成任务的单独节。每个节都以前面的节为基础。但是,如果您想查看后面节的报告设置组件而不执行前面的节,您可以在 MATLAB 中通过打开 simulink-dynamic.rpt
设置文件来查看已完成的报告设置文件。
setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp
模型。
在设置文件中指定报告选项
要创建并配置报告设置文件:
启动 Simulink 。
从 Simulink 工具条打开报告管理器。在 App 选项卡的仿真图形和报告部分中,点击 Report Generator。
选择文件 > 新建来创建报告设置文件。
保存报告设置文件。
在属性窗格中:
指定报告设置文件的保存位置。要将其保存在当前工作文件夹中,请从目录选择列表中选择当前工作目录。
指定报告格式。在文件格式选择列表中,选择 Acrobat (PDF)。
提示
在您的报告中,如果您想在系统快照中包含超链接,请使用直接 PDF (来自模板)文件格式。
输入报告的描述。在报告描述文本框中,用以下文本替换现有内容。
提示
将此代码从 HTML 文档复制并粘贴到报告管理器中。
Simulink Dynamic Report This report opens up a model, sets a block parameter several times, simulates the model, and collects the results. Results that fall within a specified range are displayed in a table after the test is complete. The report is configured to test the slrgex_vdp model only. By selecting the Eval String component immediately below the Report component, you can modify * model * block * parameter * tested values
点击文件 > 另存为 将报告设置文件保存为
simulink_tutorial.rpt
。左侧的大纲窗格显示新文件名。
要创建报告的内容,请参阅使用组件添加报告内容。
使用组件添加报告内容
报告组件
报告组件指定要包含在报告中的信息。组件是独立的、模块化的 MATLAB 对象,用于控制报告生成过程并将表格、列表和图窗等元素插入到报告设置文件中。使用组件自定义报告的外观和输出。
有关详细信息,请参阅报告组件。
下图显示了您在此示例中创建的报告的示例页面,以及用于生成此输出的组件。
注意
不要停用您添加到报告设置文件中的报告组件。
添加 MATLAB 代码
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。要添加的第一个组件是计算 MATLAB 表达式组件,它评估工作区中的 MATLAB 命令。此组件中的代码为本示例中使用的变量分配初始值。
在左侧的大纲窗格中,选择
simulink_tutorial.rpt
。在中间的库窗格中,在 MATLAB 类别下,选择计算 MATLAB 表达式。
在右侧的属性窗格中,点击向当前报告添加组件旁边的图标,将组件插入报告中。
注意
在将组件添加到报告之前,您无法在右侧的属性窗格中编辑组件信息。
在左侧的大纲窗格中,计算 MATLAB 表达式组件出现在
simulink_tutorial
报告设置文件下。Simulink Report Generator™ 软件将组件名称缩写为 Eval。Eval 组件图标左上角的图标表示该组件不能有子组件。默认情况下,在选择 Eval 组件时添加的任何组件都是该组件的同级组件。
计算 MATLAB 表达式组件的选项出现在右侧的属性窗格中。
清除在报告中插入 MATLAB 表达式和 在报告中显示命令行窗口输出复选框,这样您就不会在此报告中包含 MATLAB 代码或输出。
将 MATLAB 代码添加到要在基础工作区中计算的表达式文本框以指定以下值:
模型名称
模块名称
模块参数
参数值
处理
slrgex_vdp
模型所需的其他初始值
用以下 MATLAB 代码替换现有文本。
%The name of the model %which will be changed expModel='slrgex_vdp'; %The name of the block in the model %which will be changed expBlock='slrgex_vdp/Mu'; %The name of the block parameter %which will be changed expParam='Gain'; %The values which will be set %during experimentation. expValue=[-1 0 .5 1 2]; %expValue can be either a vector %or a cell array testMin=2.1; testMax=3; %---- do not change code below line --- try open_system(expModel); end expOkValues=cell(0,2);
注意
当您在右侧的属性窗格中更改字段时,字段背景会改变颜色(默认为奶油色),表示该字段有未应用的更改。只要您对另一个组件执行操作,Simulink Report Generator 软件就会应用更改,背景颜色就会再次变为白色。
选中在出现错误时计算此表达式复选框。
在复选框下方的字段中,将现有文本替换为以下文本:
报告资源管理器窗口现在如下所示。disp(['Error during eval: ', evalException.message])
提示
要运行您在 MATLAB 表达式中指定的命令,点击立即计算按钮。此按钮位于报告资源管理器的右上角。这是一种确保您的命令正确且不会导致报告生成问题的简单方法。
点击文件 > 保存保存报告设置文件。
有关处理错误情况的信息,请参阅 Error Handling for MATLAB Code。
添加标题页
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。使用标题页面组件为您的报告创建自定义标题页。
在左侧的大纲窗格中,选择 Eval 组件。
在中间的库窗格中,在格式化类别下,点击标题页面。
点击向当前报告添加组件旁边的图标。
标题页面组件出现在大纲窗格中。
注意
要使用标题页面组件,您的报告中需要有一个章节组件。您尚未添加章节组件,因此属性窗格会显示一条消息,表明需要章节才能使标题页面组件正确显示。因为您稍后会在此示例中添加章节组件到此报告中,所以您可以忽略该消息。
在右侧的属性窗格中:
在标题文本框中输入:
Dynamic Simulink Report
在副标题文本框中输入:
Using Simulink Report Generator to Document Changes
在选项部分中,从选择列表中选择自定义作者。
在文本框中输入您的姓名。
选中包括报告创建日期复选框。
从选择列表中选择默认日期和时间格式。右侧的属性窗格如下所示。
保存报告设置文件。
打开 Simulink 模型
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。您在 添加 MATLAB 代码 中创建的计算 MATLAB 表达式组件中的以下语句尝试打开 slrgex_vdp
模型:
try open_system(expModel); end
提示
选择左侧的大纲窗格中的 Eval 组件以再次查看此代码。
要查看 slrgex_vdp
模型是否成功打开,请使用逻辑 If 组件测试 open_system
命令的结果。
在左侧的大纲窗格中,选择标题页面组件。
在中间的库窗格中,在逻辑和流控制类别下,选择逻辑 If。该组件检查给定条件是否为真或假;在本例中,检查模型是否成功打开。
在右侧的属性窗格中,点击向当前报告添加组件旁边的图标。逻辑 If 组件在大纲窗格中显示为 if。
这些组件是报告的子组件,并且互为兄弟。组件可以具有父、子和兄弟关系。
该组件可以有子组件。添加逻辑 Then 和逻辑 Else 组件 解释了如何向 if 组件添加两个子组件。
在右侧的属性窗格中,在测试表达式文本框中,将默认文本
true
替换为以下文本:strcmp(bdroot(gcs),expModel)
strcmp
函数将打开的 Simulink 模型的名称与expModel
的值(设置为'slrgex_vdp'
)进行比较。它测试slrgex_vdp
模型是否成功打开。如果两个字符串匹配,则strcmp
返回1
(true
),如果不匹配,则返回0
(false
)。保存报告设置文件。
大纲窗格中的 if 组件名称将更改为包含您添加的表达式。
添加逻辑 Then 和逻辑 Else 组件
注意
本节以前面的任务为基础。
要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。if strcmp(bdroot(gcs), expModel)
组件有两种可能的结果。向报告设置文件添加两个子组件来处理这些情况。
在左侧的大纲窗格中,选择 if 组件。
在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 Then。
在左侧的大纲窗格中,再次选择 if 组件。
在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 Else。
这两个元素都作为子组件添加到 if 组件中,如大纲窗格中所示。
要将 else 组件移动到 then 组件下方,请选择 else 组件,然后点击工具栏上的向下键箭头一次。左侧的大纲窗格如下所示。
保存报告设置文件。
如果无法打开模型则会出现错误
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。如果 if strcmp(bdroot(gcs), expModel)
组件失败(slrgex_vdp
模型无法打开),则执行其他组件。使用章节/小节
组件在报告中显示错误消息。
在左侧的大纲窗格中,选择其他组件。
在中间的库窗格中,在格式化类别下,双击章节/小节将其添加为其他组件的子项。如果打开
slrgex_vdp
模型时发生错误,该组件会显示错误消息。注意
当您向报告添加组件时,它会默认添加为子组件,除非选定的组件不能有子组件。
在右侧的属性窗格中,从标题选择列表中选择自定义,然后在文本框中输入以下文本:
Load Model Failed.
保存报告文件。
大纲窗格如下所示。
在左侧的大纲窗格中,选择章节组件。
在中间的库窗格中,在格式化下,双击段落。
在右侧的属性窗格中,在段落文本文本框中输入以下文本,以显示以下错误消息:
表达式Error: Model %<expModel> could not be opened.
%<expModel>
表示将工作区变量expModel
的值插入到文本中,如下例所示。Error: Model slrgex_vdp could not be opened.
在左侧的大纲窗格中,选择章节。
保存报告设置文件。
大纲窗格如下所示。
创建报告主体
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。创建报告主体涉及设置组件和报告组件动态执行的代码。在此示例中,您执行以下任务:
每个操作都需要 then 组件下的一个单独组件。有关本报告中 then 组件的信息,请参阅 添加逻辑 Then 和逻辑 Else 组件。
使用模型循环组件进行处理
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。该报告多次更改 slrgex_vdp
模型中 Mu 模块的增益参数。此任务需要模型循环组件。
在左侧的大纲窗格中,选择 then 组件。
在中间的库窗格中,向下滚动到 Simulink 类别,然后双击模型循环。它被添加为
then
组件的子项。右侧的属性窗格如下所示。
在右侧的属性窗格中:
选中活动复选框来处理
slrgex_vdp
模型。在遍历模型选择列表中,选择仅所选系统仅遍历
slrgex_vdp
模型。从正在启动系统选择列表中选择模型根。
在左侧的属性窗格底部,选中为循环中的每个对象创建节复选框,为每个模型创建一个章节或部分。选中此复选框时,左侧大纲窗格中的组件名称将更改为模型循环章节。
选中在节标题中显示对象类型复选框以在标题名称中包含对象类型(在此示例中模型)。
清除为循环中的每个对象创建链接锚点复选框。
保存报告设置文件。
为每个模型添加一个段落
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。在每个模型循环章节中,使用段落组件添加解释。
在左侧的大纲窗格中,选择模型循环章节组件。
在中间的库窗格中,向上滚动到格式化类别,然后双击段落。段落组件被添加为 模型循环章节组件的子组件。
在右侧的属性窗格中的段落文本文本框中,输入以下文本:
生成此报告时,以百分号 (This report demonstrates Simulink Report Generator's ability to experiment with Simulink systems and auto-document the results. In this report, you load the model
%<expModel>
and simulate it%<length>
times. This report modifies the%<expBlock>
block's "%<expParam>
" value, setting it to the values%<expValue>
. Each iteration of the test includes a set of scope snapsnots in the report.%
) 开头并括在尖括号 (<>
) 中的变量名称将被替换为 MATLAB 工作区中这些变量的值。保存报告设置文件。
插入模型快照
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。在每个模型循环章节组件内,包含使用系统快照组件的当前模型的快照。
在左侧的大纲窗格中,选择模型循环章节组件。
在中间的库窗格中,向下滚动到 Simulink 类别,然后双击系统快照组件。
此组件将当前模型的图像插入到您的报告中。右侧的属性窗格如下所示。
在右侧的属性窗格中:
从缩放比例选择列表中选择缩放。
输入
70
作为 % 值。
在左侧的大纲窗格中,选择系统快照组件。
点击工具栏上的向下键箭头一次,将其移动到段落组件下方。
保存报告设置文件。
添加循环来处理模型
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。创建一个循环,使用 For 循环组件处理模型 %length
次。
在左侧的大纲窗格中,选择系统快照组件。
在中间的库窗格中,在逻辑和流控制类别下,双击 For 循环。For 循环组件被添加为系统快照组件的兄弟组件。
在右侧的属性窗格中:
在 End 文本框中,将现有文本替换为以下文本:
length(expValue)
expValue
是使用命令expValue=[-1 0 0.5 1 2];
在 Eval 组件中分配的增益参数值数组。在此示例中,表达式length(expValue)
的计算结果为5
。在变量名称文本框中,用
for loop
变量的名称替换现有文本。输入以下文本:左侧大纲窗格中的 - 组件名称会发生变化,以反映循环变量和终止值。expIteration
保存报告设置文件。
来自 MATLAB 表达式的模块参数值
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。对于每次迭代,从 expValue
数组中获取一个值作为增益参数值。此任务需要计算 MATLAB 表达式组件。
在左侧的大纲窗格中,选择 - 组件。
在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式。在大纲窗格中,组件名称缩写为 Eval。
在右侧的属性窗格中:
清除在报告中插入 MATLAB 表达式和在报告中显示命令行窗口输出复选框。
在要在基础工作区中计算的表达式文本框中输入以下文本:
%Evaluate this string in the base workspace if iscell(expValue) Iteration_Value=expValue{expIteration}; else Iteration_Value=... num2str(expValue(expIteration)); end
Iteration_Value
变量代表指定的数组元素。清除在出现错误时计算此表达式复选框。
保存报告设置文件。
为每次迭代创建一个节
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。使用章节/小节
组件为循环的每次迭代创建一个包含数据的单独部分。
在左侧的大纲窗格中,在 - 组件下,选择 Eval 组件。
在中间的库窗格中,在格式化类别下,双击章节/小节将其添加为同级。该组件自动添加为第 1 节,因为它位于章节组件(模型循环章节组件)内。
在右侧的属性窗格中:
在标题选择列表中,选择自定义。
在文本框中输入以下标题:
Processing the slrgex_vdp model
这表明该节标题来自第一个子组件。不要更改任何其他属性。
保存报告设置文件。
插入模块值
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。插入用于每次仿真的 Gain
值。
在左侧的大纲窗格中,选择第 1 节组件。
在中间的库窗格中,在 MATLAB 类别下,双击插入变量。
在右侧的属性窗格中:
在变量名称文本框中,输入
Iteration_Value
。在显示为选择列表中,选择段落。
右侧的属性窗格如下所示。
保存报告设置文件。
设置参数值
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。对于每次迭代,将 Gain
参数设置为从 expValue
数组中提取的值。
在左侧的大纲窗格中,选择变量组件。
在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式。该组件被添加为变量 组件的兄弟组件。
在右侧的属性窗格中,清除在报告中插入 MATLAB 表达式和在报告中显示命令行窗口输出复选框。
在要在基础工作区中计算的表达式文本框中,用以下文本替换现有文本。
set_param(expBlock,expParam,Iteration_Value); okSetValue=(1);
set_param
命令将slrgex_vdp
模型中 Mu 模块的增益参数的值设置为Iteration_Value
的值。确保选择了在出现错误时计算此表达式。在文本框中输入以下文本:
如果okSetValue=logical(0);
set_param
命令有效,则okSetValue
设置为1
。如果发生错误,则okSetValue
设置为0
。然后下一个组件报告错误并终止处理。保存报告设置文件。
左侧的大纲窗格如下所示。
使用逻辑 If 组件检查值
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。使用逻辑 If 组件检查 okSetValue
的值。如果值为 0
,则仿真无法继续,因为无法设置增益参数。
在左侧的大纲窗格中,选择
set_param
命令的 Eval 组件。在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 If。该组件被添加为 Eval 的兄弟组件。
在右侧的属性窗格中,在测试表达式文本框中,将
true
替换为okSetValue
。
okSetValue
可以是 1
(true
) 或 0
(false
),因此插入两个组件 - 逻辑 Then 和逻辑 Else - 来处理这些条件:
在左侧的大纲窗格中,选择 if (okSetValue) 组件。
要按正确顺序插入逻辑 Then 和逻辑 Else:
在中间的 Library 窗格中,双击逻辑 Else 组件。
再次选择 if (okSetValue)组件。
双击逻辑 Then 组件。左侧的大纲窗格如下所示。
在右侧的大纲窗格中,选择其他组件。
在中间的库窗格中,双击段落。
如果
okSetValue
=0
,则未设置增益参数值,报告显示错误。在右侧的属性窗格中:
从标题选项选择列表中选择自定义标题。
在选择列表旁边的文本框中输入
Error
。在段落文本文本框中输入以下文本:
Could not set %<expBlock> "%<expParam>" to value %<Iteration_Value>.
保存报告。
使用模型模拟组件仿真模型
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。现在模型已经打开,并且设置了增益参数,使用模型仿真组件来仿真 slrgex_vdp
模型。
在左侧的大纲窗格中,选择 if (okSetValue) 组件下的 then 组件。
在库窗格中的Simulink类别下,双击模型仿真。在左侧的大纲窗格中,该组件被重命名为仿真模型。
在右侧的属性窗格中:
清除使用模型的工作区 I/O 变量名复选框。
在时间文本框中,输入
dynamicT
。在状态文本框中,输入
dynamicX
。在输出文本框中,输入
dynamicY
。
右侧的属性窗格如下所示。
在左侧的大纲窗格中,选择仿真模型组件。
在中间的库窗格中:
向下滚动到 Simulink 模块类别。
双击示波器快照将其添加为 Simulink 模型组件的同级组件。
该组件捕获每次迭代的范围。
在右侧的属性窗格中:
在纸张方向选择列表中,选择纵向。
对于图像大小,输入
[5 4]
。在缩放比例选择列表中,选择缩放。
输入
75
作为 % 值。
保存报告设置文件。
为了测试信号数据是否在指定范围内,请添加另一个逻辑 If 组件:
在左侧的大纲窗格中,选择示波器快照组件。
在中间的库窗格中,向上滚动到逻辑和流控制类别。
双击逻辑 If 组件。
为了测试信号数据,请将右侧属性窗格中的测试表达式文本框中的
true
替换为以下内容:max(dynamicX(:,2))>testMin & max(dynamicX(:,2))<testMax
保存报告。
大纲窗格如下所示:
如果该条件为真,则信号数据处于所需范围内。添加一个段落组件来在报告中打印有关信号数据的信息。
在左侧的大纲窗格中,选择刚刚添加的 if 组件。
在中间的库窗格中,在格式化类别下,双击段落,使其成为 if 组件的子组件。
在右侧的属性窗格中:
从标题选项选择列表中,选择自定义标题。
在文本框中输入
Success
。在段落文本文本框中输入以下文本。
The conditioned signal has a maximum value of %<max(dynamicX(:,2))>, which lies in the desired range of greater than %<testMin> and less than %<testMax>.
要保存成功值以便在迭代结束时插入到表中,请使用计算 MATLAB 表达式组件。
在左侧的大纲窗格中,选择段落组件。
在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式。
发生了意外的结果:新组件是段落组件的子组件。
要使新组件成为段落组件的兄弟,请在左侧的大纲窗格中,选择 Eval 组件,然后点击工具栏上的左箭头。Eval 组件成为段落组件的兄弟组件。
在右侧的属性窗格中,对于 Eval 组件:
清除在报告中插入 MATLAB 表达式和在报告中显示命令行窗口输出复选框。
在要在基础工作区中计算的表达式文本框中,输入以下内容以将所需的信号值保存在
expOkValues
数组中:expOkValues=[expOkValues;... {Iteration_Value,max(dynamicX(:,2))}];
确保选择了在出现错误时计算此表达式。在文本框中插入以下文本:
disp(['Error during eval: ', evalException.message])
保存报告设置文件。
创建测试后分析节
注意
本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt
设置文件。
setedit simulink-dynamic.rpt
slrgex_vdp
模型。现在您已经收集了所有所需的值,请创建一个表格并将其插入到本章末尾的报告中,以创建后测分析节。
在左侧的大纲窗格中,选择模型循环章节组件。
在中间的库窗格中,在格式化类别下,双击章节/小节。
新部分出现在章节的开头。
点击向下键箭头三次,使第 1 节移动到 模型循环章节 组件的末尾。
在右侧的属性窗格中:
在标题选择列表中选择自定义。
在文本框中输入
Post-Test Analysis
。
在左侧的大纲窗格中,选择新的第 1 节组件。
在中间的库窗格中,在格式化类别下,双击段落。不要改变其属性。
要检查是否有任何信号值在所需范围内,请使用逻辑 If 组件检查数组
expOkValues
。如果expOkValues
为空,则表示所需范围内没有信号值。报告本次检查的结果。在左侧的 Outline 窗格中,选择
段落
组件并添加逻辑 If 子组件。在右侧的属性窗格中,在测试表达式文本框中输入要评估的表达式:
如果~isempty(expOkValues)
expOkValues
为空,则此表达式的计算结果为0
(false
);否则,则计算结果为1
(true
)。在左侧的大纲窗格中,选择 if (~isempty(expOkValue)) 组件并将逻辑 Else 组件添加为子组件。
再次选择 if(~isempty(expOkValue)) 组件并将逻辑 Then 组件添加为子组件。
这两个组件在左侧的大纲窗格中是同级的。
保存报告设置文件。
现在,插入报告组件来处理
expOkValues
为空的情况;也就是说,没有信号值落在指定范围内。在左侧的大纲窗格中,选择其他组件。
在中间的 Library 窗格中,双击文本组件将其添加为其他组件的子组件。
在右侧的属性窗格中的要包含在报告中的文本文本框中,输入以下内容:
None of the selected iteration values had a maximum signal value between %<testMin> and %<testMax>.
现在处理
expOkValues
不为空并且您想要插入可接受信号值的表的情况。在左侧的大纲窗格中,选择 then 组件。
将文本组件添加为 then 组件的子组件。
在右侧的属性窗格中的要包含在报告中的文本文本框中,输入以下文本。
%<size(expOkValues, 1)> values for %<expBlock> were found that resulted in a maximum signal value greater than %<testMin> but less than %<testMax>. The following table shows those values and their resulting signal maximum.
在左侧的大纲窗格中,选择 if (~isempty(expOkValues)) 组件的 then 组件下的文本组件。
要创建一个用于格式化表格的数组,请使用计算 MATLAB 表达式组件。
在中间的库窗格中,双击计算 MATLAB 表达式。
在右侧的属性窗格中:
清除在报告中插入 MATLAB 表达式和在报告中显示命令行窗口输出复选框。
报告的下一个组件使用字符串
Mu Value
和Signal Maximum
作为表头值。通过在要在基础工作区中计算的表达式文本框中输入以下文本,将字符串添加到expOkValues
元胞数组的前面:expOkValues=[{'Mu Value','Signal Maximum'} expOkValues];
确保选中了在出现错误时计算此表达式复选框。在文本框中输入以下文本:
disp(['Error during eval: ', evalExpression.message])
在左侧的大纲窗格中,选择 Eval 组件。
在中间的库窗格中,在格式化类别下,双击基于数组的表组件,使其成为文本和 Eval 组件的同级组件。
在右侧的属性窗格中:
在工作区变量名称文本框中,输入
expOkValues
。Simulink Report Generator 软件使用expOkValues
的内容来构建表格。在表标题文本框中,输入
Valid Iteration Values
。
保存报告设置文件。
左侧的大纲窗格如下所示。
生成报告
要生成报告,点击工具栏上的报告图标。发生以下情况:
出现“消息列表”窗口,显示报告处理过程中的信息和错误消息。指定生成报告时消息列表窗口显示的详细程度。选项范围从
0
(最少细节)到6
(最多细节)。点击位于消息列表窗口标题栏下方的选择列表来选择一个选项。本示例的其余部分使用
Message level 3 (Important messages)
。出现
slrgex_vdp
模型。您可以看到每次仿真的情况。出现示波器窗口。每次参数值改变时,示波器图也会改变。
报告的每个组件在执行时都会在报告资源管理器窗口左侧的大纲窗格中突出显示。
报告生成完成后,报告将打开。