Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

信号组

关于信号组

要显示、创建和编辑可互换的信号源组以及快速将信号源组签入和签出模型,请使用 Signal Builder 模块。您可以定义任何分段线性信号形状(波形)。

注意

不推荐使用 Signal Builder 模块处理信号组。请改用 Signal Editor 模块来显示、创建、编辑和切换可互换方案。有关详细信息,请参阅Load Data with Interchangeable Scenarios

在测试模型时使用信号组,尤其是在将其与 Simulink® Assertion 模块和来自 Simulink Coverage™ 的 Model Coverage Tool 结合使用时。

Model Configuration Parameters 中的 Solver 窗格设置会影响 Signal Builder 模块输出。请参阅动态系统的仿真阶段比较求解器,了解求解器如何影响仿真的说明。

注意

Signal Builder 模块可为您创建的每个信号添加端口。模块的 Position 参数限制 Signal Builder 模块可以具有的端口数,因此也限制您可以创建的信号数。有关详细信息,请参阅通用模块属性中的 Position 参数。

您也可以使用 signalbuilder 函数填充 Signal Builder 模块。

支持的波形

Signal Builder 模块支持这些波形。

在快速重启模式下使用 Signal Builder 模块

在打开快速重启后:

  • 您可以在各次运行之间更改数据、重命名信号和信号组以及添加新组。您不能:

    • 导入信号或信号组

    • 更改信号输出设置

  • 您可以点击 Run all 按钮一次。要重新启用 Run all 按钮,请在 Simulink Editor 工具栏上拨动快速重启按钮。但是,Run all 不使用快速重启。

编辑信号组

Signal Builder 窗口允许您对通过 Signal Builder 模块表示的组集中的信号组进行创建、重命名、移动和删除等操作。

创建和删除信号组

要创建信号组,请执行以下操作:

  1. 在 Signal Builder 中,复制一个现有信号组。

  2. 根据您的需要对其进行修改。

要复制一个现有信号组,请执行下列操作:

  1. 在 Signal Builder 中,从列表中选择该组。

  2. 选择 Group > Copy

    将创建一个新组。

要删除一个组,请从列表中选择该组,并选择 Group > Delete

重命名信号组

要重命名一个信号组,请执行下列操作:

  1. 在 Signal Builder 中,从列表中选择该组。

  2. 选择 Group > Rename

  3. 在对话框中编辑现有名称或输入新名称。点击 OK

移动信号组

要在组窗格堆栈中重新定位一个组,请执行下列操作:

  1. 在 Signal Builder 中,选择窗格。

  2. 要将该组移动到堆栈中较低的位置,请选择 Group > Move Down

  3. 要将该组移动到堆栈中较高的位置,请选择 Group > Move Up

编辑信号

可以通过 Signal Builder 来创建、剪切和粘贴、隐藏和删除信号组中的信号。

创建信号

要在当前所选信号组中创建一个信号,请执行下列操作:

  1. 在 Signal Builder 中,从 Active Group 列表中选择您要将信号添加到的组。

  2. 选择 Signal > New

    该菜单列出您可以添加的波形。

    波形说明输入输出

    常量

    常量波形

    步骤

    阶梯波形

    Pulse

    脉冲波形

    方形

    方形波形
    • Frequency (Hz)

      波形频率,以赫兹为单位

    • Amplitude

      波形幅值

    • Y Offset

      波形垂直偏移量

    • % Duty cycle

      信号为正时的周期占比(值介于 0 和 100 之间)

    Sawtooth

    锯齿波形
    • Frequency (Hz)

      波形频率,以赫兹为单位

    • Amplitude

      波形幅值

    • Y Offset

      波形垂直偏移量

    Sampled Sin

    采样正弦波波形
    • Frequency (Hz)

      波形频率,以赫兹为单位

    • Amplitude

      波形幅值

    • Y Offset

      波形垂直偏移量

    • Samples Per Period

      每个波形周期内的采样数量

    Sampled Gaussian Noise

    按照输入频率,满足输入均值和标准差,并基于高斯分布采样的高斯噪声波形
    • Frequency (Hz)

      波形频率,以赫兹为单位

    • Mean

      随机变量输出的均值

    • Standard Deviation

      随机变量输出的标准差

    • Seed (empty to use current state)

      随机数生成函数的初始种子值

    Pseudorandom Noise

    按照输入频率,满足上限和下限值,并基于二项分布的伪随机噪声波形
    • Frequency (Hz)

      波形在 Upper valueLower value 之间波动的频率(以赫兹为单位)

    • Upper value

      信号的上限

    • Lower value

      信号的下限

    • Seed

      随机数生成函数的初始种子值

    Poisson Random Noise

    在 0 和 1 之间交替的泊松随机噪声波形
    • Avg rate (1/sec)

      在 0 和 1 之间过渡的平均速率

    • Seed (empty to use current state)

      随机数生成函数的初始种子值

    Custom

    自定义分段线性波形;自定义值必须适合显示区域
    • Time values

      两个或多个时间坐标的向量

    • Y values

      对应于 Time values 中的值的两个或多个信号幅值的向量

    任一字段中的输入可以是计算结果为向量(包括 MATLAB® 工作区变量的计算结果)的任意 MATLAB 表达式。生成的各向量必须长度相等。

    注意

    如果您添加具有大量数据点(1 亿个或更多)的自定义波形,Signal Builder 会显示一条警告。

     
  3. 选择您要添加的波形。

  4. 指定输入(在提示符中),然后点击 OK

如果您选择标准波形,Signal Builder 会将具有该波形的信号添加到组中。如果您选择自定义波形,系统会提示您输入 Time valuesY values

您也可以使用 MATLAB 工作区变量创建新信号。

  1. 在 MATLAB 命令行窗口中,创建两个变量 t 和 y 的数据。

    t = 1:10
    y = 1:10

    这些向量的大小必须相同。

  2. 创建一个模型并添加一个 Signal Builder 模块。

  3. 双击 Signal Builder 模块。

  4. 选择 Signal > New > Custom

  5. 在 Custom Waveform 窗口中,在 Time values 字段中输入 t,在 Y values 字段中输入 y,然后点击 OK

    Signal Builder 模块窗口将新信号显示为 Signal 2。

定义信号输出

要指定用于发送测试信号的输出的类型,请执行下列操作:

  1. 在 Signal Builder 中,选择 Signal > Output

  2. 从列表中,选择:

    • Ports

      默认值。从模块发送各个信号。为每个 Signal N 显示一个名为 Signal N 的输出端口。

    • Bus

      从模块发送信号的单一虚拟不分层的总线。显示名为 Bus 的输出端口。

    提示

    • 您不能使用 Bus 选项创建非虚拟信号的总线。

    • 通过 Bus 选项,您可以更改模型布局,而无需重排 Signal Builder 模块信号。使用 Bus Selector 模块从此总线中选择信号。

    • 如果您使用 Signal & Scope Manager 或从信号线上下文菜单使用 Create & Connect Generator 选项创建 Signal Builder 模块,则您不能定义信号输出。在这些情况下,模块将发送单独的信号。

复制和粘贴信号

要从一个组复制信号并将其作为新信号粘贴到另一个组,请执行下列操作:

  1. 在 Signal Builder 中,选择您要复制的信号。

  2. 选择 Edit > Copy

  3. 选择您要将信号粘贴到的组。

  4. 选择 Edit > Paste

要从一个轴复制信号并将其粘贴到另一个轴以替换其信号,请执行下列操作:

  1. 选择您要复制的信号。

  2. 选择 Edit > Copy

  3. 选择轴上您要更新的信号。

  4. 选择 Edit > Paste

删除信号

要删除信号,请在 Signal Builder 中选择该信号,然后选择 Delete 或从 Edit 菜单中选择 Cut。Signal Builder 将从当前组中删除该信号。因为每个信号组必须包含相同的信号数量,Signal Builder 还会删除其他组中共享相同索引的所有信号。

重命名信号

要重命名信号,请执行下列操作:

  1. 在 Signal Builder 中,选择 Signal > Rename

    将出现一个对话框,其中的编辑字段显示信号的当前名称。

  2. 编辑当前名称或将其替换为新名称。

  3. 点击 OK

您也可以在 Signal Builder 窗口左下角的 Name 字段中编辑信号名称。

替换信号

要替换信号,请执行下列操作:

  1. 在 Signal Builder 中,选择该信号,然后选择 Signal > Replace with

    将显示波形的菜单。它包含一组标准波形(ConstantStep 等)和一个 Custom 波形选项。

  2. 选择一种波形。

    如果您选择一种标准波形,Signal Builder 会将当前所选组中的信号替换为该标准波形。对于其他波形,Signal Builder 将显示一个对话框,以允许您为请求的波形提供输入。

波形说明输入
常量常量波形。
步骤阶梯波形。
Pulse脉冲波形
方形方形波形
  • Frequency (Hz)

    波形频率,以赫兹为单位

  • Amplitude

    波形幅值

  • Y Offset

    波形垂直偏移量

  • % Duty cycle

    信号为正时的周期占比。输入介于 0 和 100 之间的一个值。

Sawtooth锯齿波形
  • Frequency (Hz)

    波形频率,以赫兹为单位

  • Amplitude

    波形幅值

  • Y Offset

    波形垂直偏移量

Sampled Sin采样正弦波波形
  • Frequency (Hz)

    波形频率,以赫兹为单位

  • Amplitude

    波形幅值

  • Y Offset

    波形垂直偏移量

  • Samples Per Period

    每个波形周期内的采样数量

Sampled Gaussian Noise按照输入频率,满足输入均值和标准差,并基于高斯分布采样的高斯噪声波形。
  • Frequency (Hz)

    波形频率,以赫兹为单位

  • Mean

    随机变量输出的均值

  • Standard Deviation

    随机变量输出的标准差

  • Seed (empty to use current state)

    随机数生成函数的初始种子值

Pseudorandom Noise按照输入频率,满足上限和下限值,并基于二项分布的伪随机噪声波形。
  • Frequency (Hz)

    波形在 Upper valueLower value 之间波动的频率(以赫兹为单位)

  • Upper value

    信号的上限

  • Lower value

    信号的下限

  • Seed

    随机数生成函数的初始种子值

Poisson Random Noise在 0 和 1 之间交替的泊松随机噪声波形
  • Avg rate (1/sec)

    在 0 和 1 之间过渡的平均速率

  • Seed (empty to use current state)

    随机数生成函数的初始种子值

Custom自定义分段线性波形。自定义值必须适合显示区域。
  • Time values

    两个或多个时间坐标的向量

  • Y values

    对应于 Time values 中的值的两个或多个信号幅值的向量

任一字段中的输入可以是计算结果为向量的任意 MATLAB 表达式。生成的各向量必须长度相等。

注意

如果您添加具有大量数据点(1 亿个或更多)的自定义波形,Signal Builder 会返回一条警告。然后,您可以取消此操作。

您也可以在 Signal Builder 窗口左下角的 Name 字段中编辑信号名称。

更改信号索引

要更改信号索引,请执行下列操作:

  1. 在 Signal Builder 中,选择该信号,然后选择 Signal > Change Index

    将显示对话框,其中的下拉列表字段包含信号的现有索引。

  2. 从下拉列表中选择另一个索引并选择 OK。或者从 Signal Builder 窗口左下角的 Index 列表中选择一个索引。

隐藏信号

默认情况下,Signal Builder 窗口在组窗格中显示组波形。要隐藏某个波形,请执行下列操作:

  1. 在 Signal Builder 中,选择该波形,然后选择 Signal > Hide

  2. 要重新显示隐藏的波形,请选择窗格,然后选择 Signal > Show

  3. 从列表中选择该信号。您也可以通过双击 Signal Builder 信号列表中的名称隐藏波形和重新显示隐藏的波形。

手动创建信号组集

本主题介绍如何手动创建信号组集。如果您有信号数据文件,如来自测试用例的信号数据文件,请考虑如导入信号组集中所述导入此数据。

要创建一个可互换信号组集,请执行下列操作:

  1. 将 Signal Builder 模块的实例从 Simulink Sources 库拖放到您的模型中。

    默认情况下,该模块表示包含输出方形波脉冲的单一信号源的单一信号组。

  2. 使用模块信号编辑器创建其他信号组、将信号添加到信号组、修改现有信号和信号组以及选择模块输出的信号组。

    注意

    每个信号组必须包含相同的信号数量。

  3. 将模块的输出连接到您的图。

    模块会为模块可以输出的每个信号显示一个输出端口。

您可以根据需要在一个模型中创建任意数量的 Signal Builder 模块,其中每个模块表示一组不同的可互换信号源组。当一个组具有多个信号时,这些信号可能具有不同的结束时间。但是,Signal Builder 模块要求同一组内各信号的结束时间匹配。如果不匹配,Signal Builder 模块会保持具有较小结束时间的信号的最后一个值,以匹配结束时间。

请参阅使用信号组进行仿真了解有关在模型中使用信号组的信息。

导入信号组集

此部分中的主题介绍如何将信号数据导入 Signal Builder 模块中。您应事先准备好要导入其内容的信号数据文件。例如,您可能有来自以前运行的测试用例的信号数据。请参阅从现有数据集导入信号组,了解 Signal Builder 模块接受的数据格式的说明。下列主题中的步骤使用文件夹 matlabroot\help\toolbox\simulink\examples 中的文件 3Grp_3Sig.xls打开)。

Signal Builder 只接受双精度类型的信号。

如果您导入 Simulink.SimulationData.Dataset 数据集,该模块会将其导入为自己的组。

从现有数据集导入信号组

您可能希望将现有信号数据集输入到 Signal Builder 模块中。在 Signal Builder 窗口上执行 File > Import from File 命令会启动 Import File 对话框。此对话框是模态对话框,意味着在对话框运行过程中焦点不能更改为另一个 MATLAB 窗口。如果您想在导入数据之后查看 Signal Builder 窗口中的更改,请执行下列操作之一:

  • 关闭 Import File 对话框。

  • 将 Import File 对话框和 Signal Builder 窗口并排放置。

注意

您不能撤消导入信号数据文件的结果。您也不能撤消在打开 Import File 对话框之前执行的最后一个操作。在您关闭 Import File 对话框时,Signal Builder 窗口上的 Undo last editRedo last edit 按钮将灰显。无论您是否导入了数据文件,这些按钮都将灰显。

Import File 对话框接受以下正确格式的文件类型:

  • Microsoft® Excel® (.xls, .xlsx)

  • 逗号分隔值 (CSV) 文本文件 (.csv)

  • MAT 文件 (.mat)

提示

要从 Microsoft Excel 电子表格导入信号数据,请考虑使用 From Spreadsheet 模块。From Spreadsheet 模块在仿真期间以增量方式从电子表格中加载数据。如果您使用 From Spreadsheet 模块,则无需处理对电子表格值的更改。

注意

Signal Builder 模块使用 xlsread 函数。请参阅 xlsread 文档,了解有关支持的平台的信息。

您只能导入符合格式要求的数据集文件。

对于 Microsoft Excel 电子表格:

  • Signal Builder 模块将第一行解释为信号名称。如果您不指定信号名称,Signal Builder 模块将使用格式 Imported_Signal # 指定默认信号名称,其中 # 随着每个未命名信号的增加而递增。

  • Signal Builder 模块将第一列解释为时间。在此列中,时间值必须是递增的。

  • Signal Builder 模块将其余列解释为信号。

  • 如果有多个工作表:

    • 每个工作表必须具有相同的信号数量(列数)。

    • 每个工作表必须具有相同的信号名称集(如果有)。

    • 每个工作表上的每个列必须具有相同的行数。

  • Signal Builder 模块将每个工作表解释为一个信号组。

此示例包含一个可接受格式的 Microsoft Excel 电子表格。它有名为 Group1、Group2 和 Group3 的三个工作表,分别表示三个信号组。

对于 CSV 文本文件:

  • 每个文件只包含数字。不要在 CSV 文件中命名信号。

  • Signal Builder 模块将第一列解释为时间。在此列中,时间值必须是递增的。

  • Signal Builder 模块将其余列解释为信号。

  • 每个列必须具有相同的条目数。

  • Signal Builder 模块将每个文件解释为一个信号组。

  • Signal Builder 模块使用格式 Imported_Signal # 为每个信号指定默认信号名称,其中 # 随着每个信号的增加而递增。

此示例包含一个可接受格式的 CSV 文件。内容表示一个信号组。

0,0,0,5,0
1,0,1,5,0
2,0,1,5,0
3,0,1,5,0
4,5,1,5,0
5,5,1,5,0
6,5,1,5,0
7,0,1,5,0
8,0,1,5,1
9,0,1,5,1
10,0,1,5,0

对于 MAT 文件:

  • Signal Builder 模块支持数据存储记录,在记录中 Simulink.SimulationData.Dataset 对象以单一组的形式表示和解释此数据。

  • Signal Builder 模块支持将 Simulink 输出保存为带有时间的结构体。

  • Signal Builder 模块支持 Signal Builder 数据格式。此格式是必须具有以下标签的一组元胞数组。

  • Signal Builder 模块不支持:

    • Simulink 输出仅作为一个结构体

    • Simulink 输出仅作为一个数组

注意

如果您导入大量数据点(1 亿个或更多),Signal Builder 会返回一条警告。然后,您可以取消此操作。

此示例包含一个可接受的记录的 MATLAB 工作区。使用 MATLAB 工作区 Save 命令将变量保存到 MAT 文件。将此文件导入 Signal Builder 模块中。

将所有信号数据替换为所选数据

Simulink 软件会创建一个包含一个信号的默认 Signal Builder 模块。要替换此信号和该模块可能显示的所有其他信号数据,请执行下列操作:

  1. 创建一个模型,并将 Signal Builder 模块拖到该模型中。

  2. 双击该模块。

    这将显示 Signal Builder 窗口,其中包含其默认值 Signal 1。

  3. 在 Signal Builder 中,选择 File > Import from File

    将显示 Import File 对话框。

  4. File to Import 字段中,输入信号数据文件名称或点击 Browse

    将显示文件浏览器。

  5. 如果您选择文件浏览器,请导航到一个信号数据文件并选择它。例如,选择 3Grp_3Sig.xls

    注意

    如果您尝试导入一个格式不正确的数据文件,会弹出一条错误消息。当您点击以取消此窗口时,Status History 窗格会显示一条更详细的错误消息(如果有)。例如:

    Data to Import 窗格包含来自该文件的信号数据。点击扩展按钮以显示所有信号。

  6. 选择要导入的信号。要导入所有信号,请点击 Select All

  7. Placement for Selected Data 列表中,选择要对信号数据执行的操作。例如,选择 “Replace existing dataset”。

    Confirm Selection 按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。如果信号数据选择不适当,Confirm Selection 将保持灰显状态。例如,如果您选择的信号数不同于您要替换的 Signal Builder 组中的信号数,Confirm Selection 始终保持灰显。

  8. 点击 Confirm Selection 按钮。

    如果所请求的操作有效,Status History 窗格会显示消息以指示状态。例如:

    确认操作还将启用 OKApply 按钮。

  9. 如果您对状态消息感到满意,请点击 Apply 以将现有信号数据替换为此文件的内容。

    当选择 “Replace existing dataset” 时,软件会提示您是否保存 Signal Builder 模块的现有内容。

  10. 按下表所述,根据需要点击一个按钮:

    如需执行以下操作...请点击...

    在将 Signal Builder 模块的内容替换为新信号数据之前对其进行保存。

    注意

    此选择会提示您用您选择的模型名称保存 Signal Builder 模块。软件仅保存 Signal Builder 模块,而不保存其他模型内容。

    Yes, save as
    替换 Signal Builder 模块的内容而不首先对其进行保存。No, import without saving
    停止替换过程。Cancel

    对于此示例,请选择 No, import without saving 以替换 Signal Builder 模块的内容。

  11. Signal Builder 模块将用新信号数据进行更新。点击 OK 以关闭 Import File 对话框并检查 Signal Builder 模块。

  12. 点击 OK

  13. 检查更新后的 Signal Builder 窗口以确认您的信号数据保持原样。

  14. 关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为 signalbuilder1

将所选信号追加到所有现有信号组

您可以从信号数据文件中导入信号,并将所选信号追加到所有现有信号组的末尾。如果要追加的信号名称不具有唯一性,则软件会对每个名称递增 1(或更大值)来对其重命名,直到它是一个唯一的信号名称。例如,如果模块和数据文件包含名为 thermostat 的信号,软件在追加时会将导入的信号重命名为 thermostat1。如果您要添加名为 thermostat 的另一个信号,软件会将最后一个版本命名为 thermostat2

本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1

  1. 在 MATLAB 命令行窗口中,键入 signalbuilder1

  2. 双击 Signal Builder 模块。

    将显示 Signal Builder 窗口。

  3. 在 Signal Builder 窗口中,选择 File > Import from File

    将显示 Import File 对话框。

  4. File to Import 字段中,输入信号数据文件名称或点击 Browse

    将显示文件浏览器。

  5. 如果您选择文件浏览器,请导航到一个信号数据文件并选择它。例如,选择 3Grp_3Sig.xls

    注意

    如果您尝试导入一个格式不正确的信号数据文件,会弹出一条错误消息。当您点击以取消此窗口时,Status History 窗格会显示一条错误消息。例如:

    Data to Import 窗格包含来自该文件的信号数据。点击扩展按钮以显示所有信号。

  6. 选择要导入的信号。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroup1 中的所有信号。

  7. Placement for Selected Data 列表中,选择要对信号数据执行的操作。例如,选择 “Append selected signals to all groups”。

    Confirm Selection 按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。如果信号数据选择不适当,Confirm Selection 将保持灰显状态。例如,如果您选择的信号数不同于您要替换的 Signal Builder 组中的信号数,Confirm Selection 始终保持灰显。

  8. 点击 Confirm Selection 按钮。

    如果所请求的操作有效,Status History 窗格会显示消息以指示状态。例如:

    确认操作还将启用 OKApply 按钮。

    观察信号的 BeforeAfter 标题。以下各部分指示在追加操作之前和之后模块与导入的数据信号的名称。

  9. 如果您对状态消息感到满意,请点击 Apply 以将选定信号追加到 Signal Builder 模块中的所有信号组。

  10. Signal Builder 模块将用新信号数据进行更新。点击 OK 以关闭 Import File 对话框并检查 Signal Builder 模块。

  11. 点击 OK

  12. 检查更新后的 Signal Builder 窗口以确认您的信号数据保持原样。请注意,软件已将来自信号数据文件的信号 Sig1、Sig2 和 Sig3 重命名为 Signal Builder 模块中的 Sig4、Sig5 和 Sig6。

  13. 关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为 signalbuilder2

将所选信号追加到有序排列的现有信号组

您可以将信号按照它们的选择顺序追加到有序信号组的末尾。这意味着您选择与目标信号组相同数量的信号,并按顺序将每个信号追加到一个对应的组中。该软件将每个追加的信号重命名为最后一个追加的信号的名称。

本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1

  1. 在 MATLAB 命令行窗口中,键入 signalbuilder1

  2. 双击 Signal Builder 模块。

  3. 请注意 Signal Builder 模块中存在多少个组。例如,此 Signal Builder 模块有三个组:myGroup1、myGroupB 和 myGroup_Three。

  4. 在 Signal Builder 窗口中,选择 File > Import from File

  5. File to Import 字段中,输入信号数据文件名称或点击 Browse

  6. 如果您选择文件浏览器,请导航到一个信号数据文件并选择它。例如,选择 3Grp_3Sig.xls

    注意

    如果您尝试导入一个格式不正确的信号数据文件,则会显示一个包含一条错误消息的弹出式窗口。当您点击以取消此窗口时,Status History 窗格会显示一条错误消息。例如:

    Data to Import 窗格包含来自该文件的信号数据。点击扩展按钮以显示所有信号。

  7. 选择要导入的信号。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroup1 中的所有信号。

  8. Placement for Selected Data 列表中,选择要对信号数据执行的操作。例如,选择 “Append selected signals to different groups (in order)”。

    Confirm Selection 按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。

  9. 点击 Confirm Selection 按钮。

    如果所请求的操作有效,Status History 窗格会显示消息以指示状态。例如:

    确认操作还将启用 OKApply 按钮。

  10. 如果您对状态消息感到满意,请点击 Apply 以追加信号。

    Signal Builder 模块将用新信号数据进行更新。点击 OK 以关闭 Import File 对话框并检查 Signal Builder 模块的三个组。

    默认情况下,位于顶层的信号组 myGroup1 显示所有信号,包括新的 Sig4。

  11. 点击另一个组名称,例如 myGroupB。请注意 Sig4 对该组是存在的,但默认情况下是隐藏的。

  12. 要在此窗格上显示 Sig4,请在窗格的选择状态区域中双击 Sig4。图形将更新以反映 Sig4。

  13. 关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为 signalbuilder3

将信号组追加到现有组

您可以将一个或多个信号组追加到现有信号组列表的末尾。如果模块中已存在与要添加的信号组同名的信号组,软件会先将组名称递增 1(或更大值),直到它成为唯一名称之后,才会添加该信号组。例如,如果模块和数据文件包含名为 MyGroup1 的组,软件在追加时会将导入的组重命名为 MyGroup2。如果您要添加名为 MyGroup1 的另一个组,软件会将最后一个版本命名为 MyGroup3

本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1

  1. 在 MATLAB 命令行窗口中,键入 signalbuilder1

  2. 双击 Signal Builder 模块。

    将显示 Signal Builder 窗口。

  3. 请注意 Signal Builder 模块中存在多少个组,以及每个组中存在多少个信号。Signal Builder 模块要求所有组都具有相同的信号数量。例如,此 Signal Builder 模块有三个组:myGroup1、myGroupB 和 myGroup_Three。每个组中存在三个信号。

  4. 双击该模块。

  5. File to Import 文本字段中,输入信号数据文件名称或点击 Browse

  6. 如果您选择文件浏览器,请导航到一个信号数据文件并选择它。例如,选择 3Grp_3Sig.xls

    Data to Import 窗格包含来自该文件的信号数据。点击扩展按钮以显示所有信号。

  7. 计算此数据文件的各组中的信号数量。如果每个组中的信号数均等于模块中已有各组中的信号数,则可以将其中一个组追加到模块中。

  8. 选择要导入的组。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroupB。

  9. Placement for Selected Data 列表中,选择要对信号组执行的操作。例如,选择 “Append groups”。

    Confirm Selection 按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。

  10. 点击 Confirm Selection 按钮。

    如果所请求的操作有效,Status History 窗格会显示消息以指示状态。例如:

    确认操作还将启用 OKApply 按钮。

  11. 如果您对状态消息感到满意,请点击 Apply 以追加信号。

    Signal Builder 模块将用新信号数据进行更新。点击 OK 以关闭 Import File 对话框并检查 Signal Builder 模块的各组。

    请注意,新信号组作为最后一个窗格添加。由于已存在名为 myGroupB 的信号组,软件会自动对新信号组的名称递增 1。选择 myGroupB。

  12. 关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为 signalbuilder4

将具有相同名称的信号追加到现有信号组

如果您追加的信号与 Signal Builder 模块中存在的某信号具有相同的名称,软件会将追加的信号的名称递增 1。软件重复递增,直到所追加信号的名称是唯一的。例如:

  1. 假定您的 Signal Builder 模块有一个信号组 myGroup1,它包含信号 Sig1、Sig2 和 Sig3。

  2. 将名为 Sig1 的信号追加到 myGroup1

  3. 您会观察到软件在将 Sig1 追加到 myGroup1 之前会将其递增为 Sig4。

追加具有不同信号名称的信号组

如果您追加的信号组的信号名称不同于 Signal Builder 模块中存在的信号组,软件会将现有信号的名称更改为与所追加的信号相同。例如,

  1. 假定您的 Signal Builder 模块有一个信号组 myGroup1,它包含信号 Sig1、Sig2 和 Sig3。

  2. 追加一个名为 myGroup2 的信号组,其信号名称为 SigA、SigB 和 SigC。

  3. 观察软件的如下行为:

    • 追加 myGroup2

    • myGroup1 中的信号进行重命名,使其与 myGroup2 中的信号名称相同。

导入具有自定义格式的数据

本主题介绍如何导入具有自定义格式的信号数据。您应事先准备好要导入的信号数据文件。请参阅从现有数据集导入信号组,了解 Signal Builder 模块接受的数据格式的说明。如果您的数据未使用这些数据格式之一进行格式化,请使用以下工作流导入自定义格式的数据。例如,此工作流使用位于文件夹 matlabroot\help\toolbox\simulink\examples打开)中的以下文件:

  • SigBldCustomFile.xls - 信号数据 Microsoft Excel 文件,它使用一种 Signal Builder 模块不接受的格式,例如:

  • createSignalBuilderSupportedFormat.m - 自定义 MATLAB 函数,它使用 xlsread 读取 Microsoft Excel 电子表格。此示例函数使用 Signal Builder 模块支持的一种格式对自定义数据重新格式化,如下所示:

    • grpNames - 包含组名称字符向量的元胞数组,行数 = 1,列数 = 组数。

    • sigNames - 包含信号名称字符向量的元胞数组,行数 = 1,列数 = 信号数。

    • time - 包含时间数据的元胞数组,行数 = 信号数,列数 = 组数。

    • data - 包含信号数据的元胞数组,行数 = 信号数,列数 = 组数。

    Signal Builder 对此自定义函数具有以下要求:

    • 每个组中的信号数量必须相同。

    • 每个组中的信号名称必须相同。

    • 每个信号中的数据点数量必须相同。

    • time 和 data 元胞数组中的每个元素都存储一个实矩阵。此矩阵可以是 [1×N] 或 [N×1] 矩阵,其中 N 是每个信号中的数据点数量。

  1. 确定您的自定义信号数据的格式,例如:

    SigBldCustomFile.xls
  2. 创建一个自定义 MATLAB 函数,该函数:

    1. 使用 MATLAB I/O 函数(例如 xlsread)读取您的自定义格式的信号数据。例如,createSignalBuilderSupportedFormat.m

    2. 将自定义格式的信号数据格式化为 Signal Builder 模块接受的一种格式,例如 MAT 文件。

  3. 使用自定义 MATLAB 函数将自定义格式的信号数据写入 Signal Builder 模块接受的文件。例如:

    createSignalBuilderSupportedFormat('SigBldCustomFile.xls', 'OutputData.mat')
  4. 将重新格式化的信号数据文件 OutputData.mat 导入 Signal Builder 模块中(请参阅导入信号组集)。

编辑波形

Signal Builder 允许您更改组输出的波形的形状、颜色、线型和粗细。

调整波形形状

Signal Builder 允许您通过用鼠标或箭头键选择并拖动线段和点或者编辑线段或点的坐标来更改波形。

选择波形

要选择波形,请用鼠标左键点击波形上的任意点。

Signal Builder 显示波形点以指示该波形处于选中状态。

要取消选择波形,请用鼠标左键点击位于波形轴上但不在波形本身上的任意点,或按 Esc 键。

点处理

您可以对波形中的点进行以下操作:

  • 要选择波形中的点,请先选择波形。然后,将鼠标光标悬停在该点上方。光标形状发生更改以指示它在点的上方。

    用鼠标左键点击该点。Signal Builder 在该点周围绘制一个圆以指示您的选择。

  • 要插入点,请选择波形,然后按住 Shift 键并点击该点所在区域。

  • 要取消选择该点,请按 Esc 键。

  • 要删除一个点,请选择该点并按 BackspaceDelete 键。

  • 要使用 signalbuilder 函数编辑点,请使用 signalbuilder set 函数代替波形。您不能以编程方式删除点。

选择线段

要选择某条线段,请先选择包含该线段的波形。然后左键点击该线段。Signal Builder 使该线段加粗以指示它处于选中状态。

要取消选择该线段,请按 Esc 键。

移动波形

要移动波形,请选中它并使用键盘上的箭头键向所需的方向移动波形。每次按键都会将波形移至对齐网格上的下一个位置(请参阅对齐网格)或 0.1 英寸(如果未启用对齐网格)。

拖动线段

要将某条线段拖到新位置,请将鼠标光标置于该线段上方。鼠标光标形状发生更改以显示您可以拖动该线段的方向。

按鼠标左键并按照指示的方向将该线段拖到所需的位置。您还可以使用键盘上的箭头键移动所选线段。

拖动点

要沿信号幅值(垂直)轴拖动点,请将鼠标光标移动到该点上方。光标形状更改为圆形以指示您可以拖动该点。以平行于 y 轴的方向将该点拖动到所需位置。要沿时间(水平)轴拖动该点,请在按住 Shift 键的同时拖动该点。您还可以使用键盘上的箭头键移动所选点。

对齐网格

每个波形轴包含一个不可见的对齐网格,便于精确定位波形点。对齐网格的原点与波形轴的原点重合。当您放下所拖动的点或线段时,Signal Builder 会将该点或线段点移动到网格上最接近的点或线段点。Signal Builder Axes 菜单允许您独立地指定网格水平(时间)轴和垂直(幅值)轴间距。间距越细致,您在放置点时的自由度越大,但精准定位点的难度也越大。默认网格间距为 0,意味着您可以将点置于网格中的任何位置;即网格实际上是关闭的。使用 Axes 菜单可选择您需要的间距。

插入和删除点

要插入一个点,请先选择波形。然后,按住 Shift 键用鼠标左键点击波形上您要插入点的位置点。要删除一个点,请选择该点并按 Del 键。

编辑点坐标

要更改点的坐标,请先选择该点。Signal Builder 在 Signal Builder 窗口底部的 Left Point 编辑字段中显示该点的当前坐标。要更改所选点的幅值,请编辑 Y 字段中的值或将其替换为新值,然后按 Enter 键。Signal Builder 将该点移动到其新位置。类似地,编辑 T 字段中的值以更改所选点的时间。

编辑线段坐标

要更改线段的坐标,请先选择该线段。Signal Builder 在 Signal Builder 窗口底部的 Left PointRight Point 编辑字段中显示该线段端点的当前坐标。要更改某坐标,请编辑其对应编辑字段中的值,然后按 Enter 键。

更改波形颜色

要更改波形的颜色,请选择该波形,然后从 Signal Builder Signal 菜单中选择 Color。Signal Builder 显示 MATLAB 颜色选择器。为波形选择一种新颜色。点击 OK

更改波形线型和粗细

Signal Builder 可以将波形显示为实线、虚线或点线。默认情况下,它使用实线。要更改波形的线型,请选择波形,然后从 Signal Builder Signal 菜单中选择 Line Style。从菜单中选择一种线型。

要更改波形的线条粗细,请选择波形,然后从 Signal 菜单中选择 Line Width。编辑粗细值,然后点击 OK

Signal Builder 时间范围

Signal Builder 时间范围用来确定显式定义其输出的时间跨度。默认情况下,时间范围从 0 到 10 秒。模块时间范围的起点和终点时间都可以更改(请参阅更改 Signal Builder 时间范围)。

如果仿真在模块时间范围的开始时间之前开始,模块会根据其前两个定义的输出外插其初始输出。如果仿真的运行在模块时间范围以外,则默认情况下模块会根据最后定义的信号值为仿真的剩余部分输出外插的值。Signal Builder Simulation Options 对话框允许您指定其他最终输出选项(请参阅Signal values after final time了解详细信息)。

注意

当您点击 Signal Builder 模块工具栏上的 Start simulation 按钮时,仿真使用模型的停止时间。波形中指定的时间范围的结束时间不是模型的停止时间。

更改 Signal Builder 时间范围

要更改时间范围,请从 Signal Builder Axes 菜单中选择 Change Time Range

在该对话框中,根据需要编辑 Min timeMax time 字段,以分别反映新时间范围的开始和结束时间。

导出信号组数据

您可以将定义 Signal Builder 模块信号组的数据导出到 MAT 文件、MATLAB 工作区或 Signal Editor 模块。

要将 Signal Builder 信号数据(格式化为 Simulink.SimulationData.Dataset)导出到 MAT 文件,请选择 File > Export Data > To MAT-file

  • File name - 输入要放入数据的 MAT 文件的名称。

  • Group indices - 输入 1 或要从中导出数据的信号组的编号,指定为标量或向量。编号必须对应于模块中的现有组。

您也可以使用 signalbuilder get 函数返回一个或多个数据集。例如:

[ds1 ds2]=signalbuilder(block,'get',[group1 group2])

要将信号数据导出到 MATLAB 工作区,请选择 File > Export Data > To Workspace

默认情况下,Signal Builder 将数据导出到名为 channels 的工作区变量。要导出到具有其他名称的变量,请在 Variable name 字段中输入该变量名称。Signal Builder 将数据作为指定变量的值导出到工作区。

导出的数据是结构体数组。结构体的 xDatayData 字段包含定义当前所选信号组中信号的坐标点。

要访问 Signal Builder 模块的信号组中的所有数据,请使用 signalbuilder get 函数:

[time, data]=signalbuilder(block,'get',signal,group)

例如:

% For time 0 to 5, create three signal groups.
block = signalbuilder([], 'create', [0 5], {[2 2] [4 4] [7 8];[0 2] [0 4] [7 10]});
% Get the signals for all three groups.
[time, data]=signalbuilder(block,'get',[1 2],[1:3])
time =

  2×3 cell array

    [1×2 double]    [1×2 double]    [1×2 double]
    [1×2 double]    [1×2 double]    [1×2 double]


data =

  2×3 cell array

    [1×2 double]    [1×2 double]    [1×2 double]
    [1×2 double]    [1×2 double]    [1×2 double]

要从 Signal Builder 模块访问信号数据并将其导出到 Signal Editor 模块,请选择 File > Export Data > To Signal Editor block

  1. Signal Builder 模块中,选择 File > Export > To Signal Editor block

    提示

    或者,点击 Signal Builder to Signal Editor button

  2. 在文件浏览器中,指定文件名以包含保存的信号数据。

    该模型中将出现 Signal Editor 模块。

  3. 要将信号数据导出到 Signal Editor 模块,请双击该模块,并在 File name 参数中验证导出的文件名。

  4. 要在 Signal Editor 用户界面中查看导入的信号数据,请点击 Launch Signal Editor (Signal Builder to Signal Editor button)。

使用信号组进行仿真

您可以使用标准仿真命令运行包含 Signal Builder 模块的模型,也可以使用 Signal Builder 窗口中的 RunRun all 按钮(请参阅 运行所有信号组)。

如果您要捕获 Run all 按钮生成的输入和输出,请考虑使用 SystemTest™ 软件。

激活信号组

在仿真期间,Signal Builder 模块始终输出活动信号组。如果该对话框处于打开状态,则活动信号组是 Signal Builder 窗口中为该模块选择的组。否则,活动组是上次关闭该对话框时所选的组。要激活一个组,请打开组 Signal Builder 窗口并选择该组。

连续运行不同信号组

Signal Builder 工具栏包含用于运行仿真的标准 Simulink 按钮。这有助于连续运行多个不同信号组。例如,您可以打开该对话框,选择一个组,运行一个仿真,选择另一个组,运行一个仿真等等,所有这些都是从 Signal Builder 窗口中进行。

运行所有信号组

要运行 Signal Builder 模块定义的所有信号组,请打开模块对话框并从 Signal Builder 工具栏中点击 按钮。Run all 按钮运行一系列仿真,它会为模块定义的每个信号组运行一个仿真。如果您在系统上安装了 Simulink Coverage 且正在使用 Model Coverage Tool,Run all 按钮会将该工具配置为收集并保存 MATLAB 工作区中每个仿真的覆盖率数据,并在上次仿真结束时显示合并的覆盖率结果报告。这样,您就能够快速确定一组信号组对您的模型进行测试的情况。

注意

要停止由 Run all 命令启动的一系列仿真,请在 MATLAB 命令行中输入 Ctrl+C

来自 Signal Builder 模块的仿真

要控制来自 Signal Builder 模块的仿真,请选择 File > Simulation Options

Signal values after final time

此控件的设置确定在仿真运行时间超过模块定义的期限时 Signal Builder 模块的输出。

  • 要对仿真剩余部分输出当前活动组中每个信号的最后一个定义的值,请选择 “Hold final value”。例如:

  • 要对仿真剩余部分输出从当前活动组中每个信号的最后一个定义的值外插的值,请选择 “Extrapolate”。例如:

  • 要对仿真剩余部分输出零,请选择 “Set to zero”。例如:

Sample time

要输出连续信号,请在 Sample time 参数中输入 0。例如,下图显示设置为在 10 秒的时间段内输出连续高斯波形的 Signal Builder 模块的输出。

要输出离散信号,请在此参数中输入信号的采样时间。下面的示例显示设置为以 0.5 秒的采样时间生成离散高斯波形的 Signal Builder 模块的输出。

Enable zero crossing

要让 Signal Builder 模块检测过零事件,请设置 Enable zero crossingOn”(默认值)。Signal Builder 模块对用于创建 Signal Builder 信号组的 From Workspace 模块设置过零检测。有关详细信息,请参阅过零检测

另请参阅

| |

相关主题