Main Content

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

以交互方式创建 Simulink Report Generator 报告

此示例显示如何使用报告资源管理器设计报告设置文件并生成执行以下操作的报告:

  • 打开范德波尔方程的 Simulink® 模型,称为 slrgex_vdp 模型。

  • Mu 模块的增益参数设置为五个不同的值。

  • 每次设置增益参数时仿真模型。

  • 收集结果。在指定范围内的结果将显示在生成的报告的表格中。

您不需要了解 MATLAB® 或 Simulink 软件来创建和运行此示例报告。但是,了解这些产品将有助于您理解执行的 MATLAB 代码和模型仿真。

运行以下命令访问本示例中使用的支持文件。

openExample('rptgenext/SimulinkReportGeneratorFilesExample');

要创建此报告,请执行以下主要任务:

此示例包括针对不同类型的报告创建和生成任务的单独节。每个节都以前面的节为基础。但是,如果您想查看后面节的报告设置组件而不执行前面的节,您可以在 MATLAB 中通过打开 simulink-dynamic.rpt 设置文件来查看已完成的报告设置文件。

setedit simulink-dynamic.rpt

此报告用于 slrgex_vdp 模型。

在设置文件中指定报告选项

要创建并配置报告设置文件:

  1. 启动 Simulink 。

  2. 从 Simulink 工具条打开报告管理器。在 App 选项卡的仿真图形和报告部分中,点击 Report Generator

  3. 选择文件 > 新建来创建报告设置文件。

  4. 保存报告设置文件。

    在属性窗格中:

    1. 指定报告设置文件的保存位置。要将其保存在当前工作文件夹中,请从目录选择列表中选择当前工作目录

    2. 指定报告格式。在文件格式选择列表中,选择 Acrobat (PDF)

      提示

      在您的报告中,如果您想在系统快照中包含超链接,请使用直接 PDF (来自模板)文件格式。

    3. 输入报告的描述。在报告描述文本框中,用以下文本替换现有内容。

      提示

      将此代码从 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
  5. 点击文件 > 另存为 将报告设置文件保存为 simulink_tutorial.rpt

    左侧的大纲窗格显示新文件名。

要创建报告的内容,请参阅使用组件添加报告内容

使用组件添加报告内容

报告组件

报告组件指定要包含在报告中的信息。组件是独立的、模块化的 MATLAB 对象,用于控制报告生成过程并将表格、列表和图窗等元素插入到报告设置文件中。使用组件自定义报告的外观和输出。

有关详细信息,请参阅报告组件

下图显示了您在此示例中创建的报告的示例页面,以及用于生成此输出的组件。

注意

不要停用您添加到报告设置文件中的报告组件。

添加 MATLAB 代码

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

要添加的第一个组件是计算 MATLAB 表达式组件,它评估工作区中的 MATLAB 命令。此组件中的代码为本示例中使用的变量分配初始值。

  1. 在左侧的大纲窗格中,选择simulink_tutorial.rpt

  2. 在中间的库窗格中,在 MATLAB 类别下,选择计算 MATLAB 表达式

  3. 在右侧的属性窗格中,点击向当前报告添加组件旁边的图标,将组件插入报告中。

    注意

    在将组件添加到报告之前,您无法在右侧的属性窗格中编辑组件信息。

    在左侧的大纲窗格中,计算 MATLAB 表达式组件出现在 simulink_tutorial 报告设置文件下。Simulink Report Generator™ 软件将组件名称缩写为 Eval

    Eval 组件图标左上角的图标表示该组件不能有子组件。默认情况下,在选择 Eval 组件时添加的任何组件都是该组件的同级组件。

    计算 MATLAB 表达式组件的选项出现在右侧的属性窗格中。

  4. 清除在报告中插入 MATLAB 表达式在报告中显示命令行窗口输出复选框,这样您就不会在此报告中包含 MATLAB 代码或输出。

  5. 将 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 软件就会应用更改,背景颜色就会再次变为白色。

  6. 选中在出现错误时计算此表达式复选框。

  7. 在复选框下方的字段中,将现有文本替换为以下文本:

    disp(['Error during eval: ', evalException.message])
    报告资源管理器窗口现在如下所示。

    提示

    要运行您在 MATLAB 表达式中指定的命令,点击立即计算按钮。此按钮位于报告资源管理器的右上角。这是一种确保您的命令正确且不会导致报告生成问题的简单方法。

  8. 点击文件 > 保存保存报告设置文件。

有关处理错误情况的信息,请参阅 Error Handling for MATLAB Code

添加标题页

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

使用标题页面组件为您的报告创建自定义标题页。

  1. 在左侧的大纲窗格中,选择 Eval 组件。

  2. 在中间的库窗格中,在格式化类别下,点击标题页面

  3. 点击向当前报告添加组件旁边的图标。

    标题页面组件出现在大纲窗格中。

    注意

    要使用标题页面组件,您的报告中需要有一个章节组件。您尚未添加章节组件,因此属性窗格会显示一条消息,表明需要章节才能使标题页面组件正确显示。因为您稍后会在此示例中添加章节组件到此报告中,所以您可以忽略该消息。

  4. 在右侧的属性窗格中:

    1. 标题文本框中输入:

      Dynamic Simulink Report
    2. 副标题文本框中输入:

      Using Simulink Report Generator to Document Changes
    3. 选项部分中,从选择列表中选择自定义作者

    4. 在文本框中输入您的姓名。

    5. 选中包括报告创建日期复选框。

    6. 从选择列表中选择默认日期和时间格式。右侧的属性窗格如下所示。

  5. 保存报告设置文件。

打开 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 命令的结果。

  1. 在左侧的大纲窗格中,选择标题页面组件。

  2. 在中间的库窗格中,在逻辑和流控制类别下,选择逻辑 If。该组件检查给定条件是否为真或假;在本例中,检查模型是否成功打开。

  3. 在右侧的属性窗格中,点击向当前报告添加组件旁边的图标。逻辑 If 组件在大纲窗格中显示为 if

    这些组件是报告的子组件,并且互为兄弟。组件可以具有父、子和兄弟关系。

    该组件可以有子组件。添加逻辑 Then 和逻辑 Else 组件 解释了如何向 if 组件添加两个子组件。

  4. 在右侧的属性窗格中,在测试表达式文本框中,将默认文本 true 替换为以下文本:

    strcmp(bdroot(gcs),expModel)
    strcmp 函数将打开的 Simulink 模型的名称与 expModel 的值(设置为 'slrgex_vdp')进行比较。它测试 slrgex_vdp 模型是否成功打开。如果两个字符串匹配,则 strcmp 返回 1 (true),如果不匹配,则返回 0 (false)。

  5. 保存报告设置文件。

    大纲窗格中的 if 组件名称将更改为包含您添加的表达式。

添加逻辑 Then 和逻辑 Else 组件

注意

本节以前面的任务为基础。

要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

if strcmp(bdroot(gcs), expModel) 组件有两种可能的结果。向报告设置文件添加两个子组件来处理这些情况。

  1. 在左侧的大纲窗格中,选择 if 组件。

  2. 在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 Then

  3. 在左侧的大纲窗格中,再次选择 if 组件。

  4. 在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 Else

    这两个元素都作为子组件添加到 if 组件中,如大纲窗格中所示。

  5. 要将 else 组件移动到 then 组件下方,请选择 else 组件,然后点击工具栏上的向下键箭头一次。左侧的大纲窗格如下所示。

  6. 保存报告设置文件。

如果无法打开模型则会出现错误

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

如果 if strcmp(bdroot(gcs), expModel) 组件失败(slrgex_vdp 模型无法打开),则执行其他组件。使用章节/小节组件在报告中显示错误消息。

  1. 在左侧的大纲窗格中,选择其他组件。

  2. 在中间的库窗格中,在格式化类别下,双击章节/小节将其添加为其他组件的子项。如果打开 slrgex_vdp 模型时发生错误,该组件会显示错误消息。

    注意

    当您向报告添加组件时,它会默认添加为子组件,除非选定的组件不能有子组件。

  3. 在右侧的属性窗格中,从标题选择列表中选择自定义,然后在文本框中输入以下文本:

    Load Model Failed.

    保存报告文件。

    大纲窗格如下所示。

  4. 在左侧的大纲窗格中,选择章节组件。

  5. 在中间的库窗格中,在格式化下,双击段落

  6. 在右侧的属性窗格中,在段落文本文本框中输入以下文本,以显示以下错误消息:

    Error: Model %<expModel> could not be opened.
    表达式 %<expModel> 表示将工作区变量 expModel 的值插入到文本中,如下例所示。
    Error: Model slrgex_vdp could not be opened.

  7. 在左侧的大纲窗格中,选择章节。

  8. 保存报告设置文件。

    大纲窗格如下所示。

创建报告主体

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 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 模块的增益参数。此任务需要模型循环组件。

  1. 在左侧的大纲窗格中,选择 then 组件。

  2. 在中间的库窗格中,向下滚动到 Simulink 类别,然后双击模型循环。它被添加为 then 组件的子项。

    右侧的属性窗格如下所示。

  3. 在右侧的属性窗格中:

    1. 选中活动复选框来处理 slrgex_vdp 模型。

    2. 遍历模型选择列表中,选择仅所选系统仅遍历 slrgex_vdp 模型。

    3. 正在启动系统选择列表中选择模型根

    4. 在左侧的属性窗格底部,选中为循环中的每个对象创建节复选框,为每个模型创建一个章节或部分。选中此复选框时,左侧大纲窗格中的组件名称将更改为模型循环章节

    5. 选中在节标题中显示对象类型复选框以在标题名称中包含对象类型(在此示例中模型)。

    6. 清除为循环中的每个对象创建链接锚点复选框。

  4. 保存报告设置文件。

为每个模型添加一个段落

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

在每个模型循环章节中,使用段落组件添加解释。

  1. 在左侧的大纲窗格中,选择模型循环章节组件。

  2. 在中间的库窗格中,向上滚动到格式化类别,然后双击段落段落组件被添加为 模型循环章节组件的子组件。

  3. 在右侧的属性窗格中的段落文本文本框中,输入以下文本:

    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 工作区中这些变量的值。

  4. 保存报告设置文件。

插入模型快照

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

在每个模型循环章节组件内,包含使用系统快照组件的当前模型的快照。

  1. 在左侧的大纲窗格中,选择模型循环章节组件。

  2. 在中间的库窗格中,向下滚动到 Simulink 类别,然后双击系统快照组件。

    此组件将当前模型的图像插入到您的报告中。右侧的属性窗格如下所示。

  3. 在右侧的属性窗格中:

    1. 缩放比例选择列表中选择缩放

    2. 输入 70 作为 % 值。

  4. 在左侧的大纲窗格中,选择系统快照组件。

  5. 点击工具栏上的向下键箭头一次,将其移动到段落组件下方。

  6. 保存报告设置文件。

添加循环来处理模型

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

创建一个循环,使用 For 循环组件处理模型 %length 次。

  1. 在左侧的大纲窗格中,选择系统快照组件。

  2. 在中间的库窗格中,在逻辑和流控制类别下,双击 For 循环For 循环组件被添加为系统快照组件的兄弟组件。

  3. 在右侧的属性窗格中:

    1. End 文本框中,将现有文本替换为以下文本:

      length(expValue)
      expValue 是使用命令 expValue=[-1 0 0.5 1 2];Eval 组件中分配的增益参数值数组。在此示例中,表达式 length(expValue) 的计算结果为 5

    2. 变量名称文本框中,用 for loop 变量的名称替换现有文本。输入以下文本:

      expIteration
      左侧大纲窗格中的 - 组件名称会发生变化,以反映循环变量和终止值。

  4. 保存报告设置文件。

来自 MATLAB 表达式的模块参数值

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

对于每次迭代,从 expValue 数组中获取一个值作为增益参数值。此任务需要计算 MATLAB 表达式组件。

  1. 在左侧的大纲窗格中,选择 - 组件。

  2. 在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式。在大纲窗格中,组件名称缩写为 Eval

  3. 在右侧的属性窗格中:

    1. 清除在报告中插入 MATLAB 表达式在报告中显示命令行窗口输出复选框。

    2. 要在基础工作区中计算的表达式文本框中输入以下文本:

      %Evaluate this string in the base workspace
      
      if iscell(expValue)
         Iteration_Value=expValue{expIteration};
      else
        Iteration_Value=...
           num2str(expValue(expIteration));
      end
      Iteration_Value 变量代表指定的数组元素。

    3. 清除在出现错误时计算此表达式复选框。

  4. 保存报告设置文件。

为每次迭代创建一个节

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

使用章节/小节组件为循环的每次迭代创建一个包含数据的单独部分。

  1. 在左侧的大纲窗格中,在 - 组件下,选择 Eval 组件。

  2. 在中间的库窗格中,在格式化类别下,双击章节/小节将其添加为同级。该组件自动添加为第 1 节,因为它位于章节组件(模型循环章节组件)内。

  3. 在右侧的属性窗格中:

    1. 标题选择列表中,选择自定义

    2. 在文本框中输入以下标题:

      Processing the slrgex_vdp model

    这表明该节标题来自第一个子组件。不要更改任何其他属性。

  4. 保存报告设置文件。

插入模块值

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

插入用于每次仿真的 Gain 值。

  1. 在左侧的大纲窗格中,选择第 1 节组件。

  2. 在中间的库窗格中,在 MATLAB 类别下,双击插入变量

  3. 在右侧的属性窗格中:

    1. 变量名称文本框中,输入 Iteration_Value

    2. 显示为选择列表中,选择段落

    右侧的属性窗格如下所示。

  4. 保存报告设置文件。

设置参数值

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

对于每次迭代,将 Gain 参数设置为从 expValue 数组中提取的值。

  1. 在左侧的大纲窗格中,选择变量组件。

  2. 在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式。该组件被添加为变量 组件的兄弟组件。

  3. 在右侧的属性窗格中,清除在报告中插入 MATLAB 表达式在报告中显示命令行窗口输出复选框。

  4. 要在基础工作区中计算的表达式文本框中,用以下文本替换现有文本。

    set_param(expBlock,expParam,Iteration_Value);
    okSetValue=(1);
    set_param 命令将 slrgex_vdp 模型中 Mu 模块的增益参数的值设置为 Iteration_Value 的值。

  5. 确保选择了在出现错误时计算此表达式。在文本框中输入以下文本:

    okSetValue=logical(0);
    如果 set_param 命令有效,则 okSetValue 设置为 1。如果发生错误,则 okSetValue 设置为 0。然后下一个组件报告错误并终止处理。

  6. 保存报告设置文件。

    左侧的大纲窗格如下所示。

使用逻辑 If 组件检查值

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

使用逻辑 If 组件检查 okSetValue 的值。如果值为 0,则仿真无法继续,因为无法设置增益参数。

  1. 在左侧的大纲窗格中,选择 set_param 命令的 Eval 组件。

  2. 在中间的库窗格中,在逻辑和流控制类别下,双击逻辑 If。该组件被添加为 Eval 的兄弟组件。

  3. 在右侧的属性窗格中,在测试表达式文本框中,将 true 替换为 okSetValue

okSetValue 可以是 1 (true) 或 0 (false),因此插入两个组件 - 逻辑 Then逻辑 Else - 来处理这些条件:

  1. 在左侧的大纲窗格中,选择 if (okSetValue) 组件。

  2. 要按正确顺序插入逻辑 Then逻辑 Else

    1. 在中间的 Library 窗格中,双击逻辑 Else 组件。

    2. 再次选择 if (okSetValue)组件。

    3. 双击逻辑 Then 组件。左侧的大纲窗格如下所示。

  3. 在右侧的大纲窗格中,选择其他组件。

  4. 在中间的库窗格中,双击段落

    如果 okSetValue = 0,则未设置增益参数值,报告显示错误。

  5. 在右侧的属性窗格中:

    1. 标题选项选择列表中选择自定义标题

    2. 在选择列表旁边的文本框中输入 Error

    3. 段落文本文本框中输入以下文本:

      Could not set %<expBlock> "%<expParam>" to value 
      %<Iteration_Value>.

  6. 保存报告。

使用模型模拟组件仿真模型

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

现在模型已经打开,并且设置了增益参数,使用模型仿真组件来仿真 slrgex_vdp 模型。

  1. 在左侧的大纲窗格中,选择 if (okSetValue) 组件下的 then 组件。

  2. 在库窗格中的Simulink类别下,双击模型仿真。在左侧的大纲窗格中,该组件被重命名为仿真模型

  3. 在右侧的属性窗格中:

    1. 清除使用模型的工作区 I/O 变量名复选框。

    2. 时间文本框中,输入 dynamicT

    3. 状态文本框中,输入 dynamicX

    4. 输出文本框中,输入 dynamicY

    右侧的属性窗格如下所示。

  4. 在左侧的大纲窗格中,选择仿真模型组件。

  5. 在中间的库窗格中:

    1. 向下滚动到 Simulink 模块类别。

    2. 双击示波器快照将其添加为 Simulink 模型组件的同级组件。

    该组件捕获每次迭代的范围。

  6. 在右侧的属性窗格中:

    1. 纸张方向选择列表中,选择纵向

    2. 对于图像大小,输入 [5 4]

    3. 缩放比例选择列表中,选择缩放

    4. 输入 75 作为 % 值。

  7. 保存报告设置文件。

  8. 为了测试信号数据是否在指定范围内,请添加另一个逻辑 If 组件:

    1. 在左侧的大纲窗格中,选择示波器快照组件。

    2. 在中间的库窗格中,向上滚动到逻辑和流控制类别。

    3. 双击逻辑 If 组件。

  9. 为了测试信号数据,请将右侧属性窗格中的测试表达式文本框中的 true 替换为以下内容:

    max(dynamicX(:,2))>testMin & max(dynamicX(:,2))<testMax

  10. 保存报告。

    大纲窗格如下所示:

  11. 如果该条件为真,则信号数据处于所需范围内。添加一个段落组件来在报告中打印有关信号数据的信息。

    1. 在左侧的大纲窗格中,选择刚刚添加的 if 组件。

    2. 在中间的库窗格中,在格式化类别下,双击段落,使其成为 if 组件的子组件。

    3. 在右侧的属性窗格中:

      1. 标题选项选择列表中,选择自定义标题

      2. 在文本框中输入Success

      3. 段落文本文本框中输入以下文本。

        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>.

  12. 要保存成功值以便在迭代结束时插入到表中,请使用计算 MATLAB 表达式组件。

    1. 在左侧的大纲窗格中,选择段落组件。

    2. 在中间的库窗格中,在 MATLAB 类别下,双击计算 MATLAB 表达式

      发生了意外的结果:新组件是段落组件的子组件。

    3. 要使新组件成为段落组件的兄弟,请在左侧的大纲窗格中,选择 Eval 组件,然后点击工具栏上的左箭头。Eval 组件成为段落组件的兄弟组件。

  13. 在右侧的属性窗格中,对于 Eval 组件:

    1. 清除在报告中插入 MATLAB 表达式在报告中显示命令行窗口输出复选框。

    2. 要在基础工作区中计算的表达式文本框中,输入以下内容以将所需的信号值保存在 expOkValues 数组中:

      expOkValues=[expOkValues;...
           {Iteration_Value,max(dynamicX(:,2))}];

    3. 确保选择了在出现错误时计算此表达式。在文本框中插入以下文本:

      disp(['Error during eval: ', evalException.message])

  14. 保存报告设置文件。

创建测试后分析节

注意

本节以前面的任务为基础。要查看已完成的报告设置文件,请打开 simulink-dynamic.rpt 设置文件。

setedit simulink-dynamic.rpt
此报告用于 slrgex_vdp 模型。

现在您已经收集了所有所需的值,请创建一个表格并将其插入到本章末尾的报告中,以创建后测分析节。

  1. 在左侧的大纲窗格中,选择模型循环章节组件。

  2. 在中间的库窗格中,在格式化类别下,双击章节/小节

    新部分出现在章节的开头。

    点击向下键箭头三次,使第 1 节移动到 模型循环章节 组件的末尾。

  3. 在右侧的属性窗格中:

    1. 标题选择列表中选择自定义

    2. 在文本框中输入 Post-Test Analysis

  4. 在左侧的大纲窗格中,选择新的第 1 节组件。

  5. 在中间的库窗格中,在格式化类别下,双击段落。不要改变其属性。

  6. 要检查是否有任何信号值在所需范围内,请使用逻辑 If 组件检查数组 expOkValues。如果 expOkValues 为空,则表示所需范围内没有信号值。报告本次检查的结果。

    1. 在左侧的 Outline 窗格中,选择段落组件并添加逻辑 If 子组件。

    2. 在右侧的属性窗格中,在测试表达式文本框中输入要评估的表达式:

      ~isempty(expOkValues)
      如果 expOkValues 为空,则此表达式的计算结果为 0 (false);否则,则计算结果为 1 (true)。

    3. 在左侧的大纲窗格中,选择 if (~isempty(expOkValue)) 组件并将逻辑 Else 组件添加为子组件。

    4. 再次选择 if(~isempty(expOkValue)) 组件并将逻辑 Then 组件添加为子组件。

      这两个组件在左侧的大纲窗格中是同级的。

  7. 保存报告设置文件。

  8. 现在,插入报告组件来处理 expOkValues 为空的情况;也就是说,没有信号值落在指定范围内。

    1. 在左侧的大纲窗格中,选择其他组件。

    2. 在中间的 Library 窗格中,双击文本组件将其添加为其他组件的子组件。

    3. 在右侧的属性窗格中的要包含在报告中的文本文本框中,输入以下内容:

      None of the selected iteration values had 
      a maximum signal value between %<testMin> and %<testMax>.

  9. 现在处理 expOkValues 不为空并且您想要插入可接受信号值的表的情况。

    1. 在左侧的大纲窗格中,选择 then 组件。

    2. 文本组件添加为 then 组件的子组件。

    3. 在右侧的属性窗格中的要包含在报告中的文本文本框中,输入以下文本。

      %<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.

    4. 在左侧的大纲窗格中,选择 if (~isempty(expOkValues)) 组件的 then 组件下的文本组件。

  10. 要创建一个用于格式化表格的数组,请使用计算 MATLAB 表达式组件。

    1. 在中间的库窗格中,双击计算 MATLAB 表达式

    2. 在右侧的属性窗格中:

      1. 清除在报告中插入 MATLAB 表达式在报告中显示命令行窗口输出复选框。

      2. 报告的下一个组件使用字符串 Mu ValueSignal Maximum 作为表头值。通过在要在基础工作区中计算的表达式文本框中输入以下文本,将字符串添加到 expOkValues 元胞数组的前面:

        expOkValues=[{'Mu Value','Signal Maximum'} expOkValues];

      3. 确保选中了在出现错误时计算此表达式复选框。在文本框中输入以下文本:

        disp(['Error during eval: ', evalExpression.message])

  11. 在左侧的大纲窗格中,选择 Eval 组件。

  12. 在中间的库窗格中,在格式化类别下,双击基于数组的表组件,使其成为文本Eval 组件的同级组件。

  13. 在右侧的属性窗格中:

    1. 工作区变量名称文本框中,输入 expOkValuesSimulink Report Generator 软件使用 expOkValues 的内容来构建表格。

    2. 表标题文本框中,输入 Valid Iteration Values

  14. 保存报告设置文件。

    左侧的大纲窗格如下所示。

生成报告

要生成报告,点击工具栏上的报告图标。发生以下情况:

  1. 出现“消息列表”窗口,显示报告处理过程中的信息和错误消息。指定生成报告时消息列表窗口显示的详细程度。选项范围从 0(最少细节)到 6(最多细节)。点击位于消息列表窗口标题栏下方的选择列表来选择一个选项。

    本示例的其余部分使用 Message level 3 (Important messages)

  2. 出现 slrgex_vdp 模型。您可以看到每次仿真的情况。

  3. 出现示波器窗口。每次参数值改变时,示波器图也会改变。

  4. 报告的每个组件在执行时都会在报告资源管理器窗口左侧的大纲窗格中突出显示。

报告生成完成后,报告将打开。