信号组
关于信号组
要显示、创建和编辑可互换的信号源组以及快速将信号源组签入和签出模型,请使用 Signal Builder 模块。您可以定义任何分段线性信号形状(波形)。
注意
不推荐使用 Signal Builder 模块处理信号组。请改用 Signal Editor 模块来显示、创建、编辑和切换可互换场景。有关详细信息,请参阅创建和编辑信号数据。有关为什么应迁移模型的详细信息,请参阅Migrate from Signal Builder Block to Signal Editor Block。
在测试模型时使用信号组,尤其是在将其与 Simulink® Assertion 模块和来自 Simulink Coverage™ 的模型覆盖率工具结合使用时。
模型配置参数中的求解器窗格设置会影响 Signal Builder 模块输出。请参阅动态系统的仿真阶段和比较求解器,了解求解器如何影响仿真的描述。
注意
Signal Builder 模块可为您创建的每个信号添加端口。模块的位置参数限制 Signal Builder 模块可以具有的端口数,因此也限制您可以创建的信号数。有关详细信息,请参阅通用模块属性中的位置参数。
您也可以使用 signalbuilder
函数填充 Signal Builder 模块。
支持的波形
Signal Builder 模块支持这些波形。
在快速重启模式下使用 Signal Builder 模块
在打开快速重启后:
您可以在各次运行之间更改数据、重命名信号和信号组以及添加新组。您不能:
导入信号或信号组
更改信号输出设置
您可以点击全部运行按钮一次。要重新启用全部运行按钮,请在 Simulink 编辑器工具栏上拨动快速重启按钮。但是,全部运行不使用快速重启。
编辑信号组
Signal Builder 窗口允许您对通过 Signal Builder 模块表示的组集中的信号组进行创建、重命名、移动和删除等操作。
创建和删除信号组
要创建信号组,请执行以下操作:
在 Signal Builder 中,复制一个现有信号组。
根据您的需要对其进行修改。
要复制一个现有信号组,请执行下列操作:
在 Signal Builder 中,从列表中选择该组。
选择组 > 复制。
将创建一个新组。
要删除一个组,请从列表中选择该组,并选择组 > 删除。
重命名信号组
要重命名一个信号组,请执行下列操作:
在 Signal Builder 中,从列表中选择该组。
选择组 > 重命名。
在对话框中编辑现有名称或输入新名称。点击确定。
移动信号组
要在组窗格堆栈中重新定位一个组,请执行下列操作:
在 Signal Builder 中,选择窗格。
要将该组移动到堆栈中较低的位置,请选择组 > 下移。
要将该组移动到堆栈中较高的位置,请选择组 > 上移。
编辑信号
可以通过 Signal Builder 来创建、剪切和粘贴、隐藏和删除信号组中的信号。
创建信号
要在当前所选信号组中创建一个信号,请执行下列操作:
在 Signal Builder 中,从“活动组”列表中选择您要将信号添加到的组。
选择信号 > 新建。
该菜单列出您可以添加的波形。
波形 描述 输入 输出 常量
常量波形 无 阶跃
阶跃波形 无 脉冲
脉冲波形 无 方波
方形波形 频率(Hz)
波形频率,以赫兹为单位
振幅
波形振幅
Y 偏移
波形垂直偏移量
% 占空比
信号为正时的周期占比(值介于 0 和 100 之间)
锯齿波
锯齿波形 频率(Hz)
波形频率,以赫兹为单位
振幅
波形振幅
Y 偏移
波形垂直偏移量
正弦采样
采样正弦波波形 频率(Hz)
波形频率,以赫兹为单位
振幅
波形振幅
Y 偏移
波形垂直偏移量
每周期采样数
每个波形周期内的采样数量
高斯噪声采样
按照输入频率,满足输入均值和标准差,并基于高斯分布采样的高斯噪声波形 频率(Hz)
波形频率,以赫兹为单位
均值
随机变量输出的均值
标准差
随机变量输出的标准差
种子(为空时使用当前状态)
随机数生成函数的初始种子值
伪随机噪声
按照输入频率,满足上限和下限值,并基于二项分布的伪随机噪声波形 频率(Hz)
波形在上限值和下限值之间波动的频率(以赫兹为单位)
上限值
信号的上限
下限值
信号的下限
种子
随机数生成函数的初始种子值
泊松随机噪声
在 0 和 1 之间交替的泊松随机噪声波形 平均速率(1/秒)
在 0 和 1 之间过渡的平均速率
种子(为空时使用当前状态)
随机数生成函数的初始种子值
自定义
自定义分段线性波形;自定义值必须适合显示区域 时间值
两个或多个时间坐标的向量
Y 值
对应于时间值中的值的两个或多个信号振幅的向量
任一字段中的输入可以是计算结果为向量(包括 MATLAB® 工作区变量的计算结果)的任意 MATLAB 表达式。生成的各向量必须长度相等。
注意
如果您添加具有大量数据点(1 亿个或更多)的自定义波形,Signal Builder 会显示一条警告。
选择您要添加的波形。
指定输入(在提示符中),然后点击确定。
如果您选择标准波形,Signal Builder 会将具有该波形的信号添加到组中。如果您选择自定义波形,系统会提示您输入时间值和 Y 值。
您也可以使用 MATLAB 工作区变量创建新信号。
在 MATLAB 命令行窗口中,创建两个变量 t 和 y 的数据。
t = 1:10 y = 1:10
这些向量的大小必须相同。
创建一个模型并添加一个 Signal Builder 模块。
双击 Signal Builder 模块。
选择信号 > 新建 > 自定义。
在“自定义波形”窗口中,在时间值字段中输入 t,在 Y 值字段中输入 y,然后点击确定。
Signal Builder 模块窗口将新信号显示为 Signal 2。
定义信号输出
要指定用于发送测试信号的输出的类型,请执行下列操作:
在 Signal Builder 中,选择信号 > 输出。
从列表中,选择:
端口
默认值。从模块发送各个信号。为每个 Signal
N
显示一个名为 SignalN
的输出端口。总线
从模块发送信号的单一虚拟不分层的总线。显示名为 Bus 的输出端口。
提示
您不能使用总线选项创建非虚拟信号的总线。
通过总线选项,您可以更改模型布局,而无需重排 Signal Builder 模块信号。使用 Bus Selector 模块从此总线中选择信号。
如果您使用查看器和生成器管理工具或从信号线上下文菜单使用创建并连接生成器选项创建 Signal Builder 模块,则您不能定义信号输出。在这些情况下,模块将发送单独的信号。
复制和粘贴信号
要从一个组复制信号并将其作为新信号粘贴到另一个组,请执行下列操作:
在 Signal Builder 中,选择您要复制的信号。
选择编辑 > 复制。
选择您要将信号粘贴到的组。
选择编辑 > 粘贴。
要从一个轴复制信号并将其粘贴到另一个轴以替换其信号,请执行下列操作:
选择您要复制的信号。
选择编辑 > 复制。
选择轴上您要更新的信号。
选择编辑 > 粘贴。
删除信号
要删除信号,请在 Signal Builder 中选择该信号,然后选择删除或从编辑菜单中选择剪切。Signal Builder 将从当前组中删除该信号。因为每个信号组必须包含相同的信号数量,Signal Builder 还会删除其他组中共享相同索引的所有信号。
重命名信号
要重命名信号,请执行下列操作:
在 Signal Builder 中,选择信号 > 重命名。
将出现一个对话框,其中的编辑字段显示信号的当前名称。
编辑当前名称或将其替换为新名称。
点击确定。
您也可以在 Signal Builder 窗口左下角的名称字段中编辑信号名称。
替换信号
要替换信号,请执行下列操作:
在 Signal Builder 中,选择该信号,然后选择信号 > 替换为。
将显示波形的菜单。它包含一组标准波形(常量、步长等)和一个自定义波形选项。
选择一种波形。
如果您选择一种标准波形,Signal Builder 会将当前所选组中的信号替换为该标准波形。对于其他波形,Signal Builder 将显示一个对话框,以允许您为请求的波形提供输入。
波形 | 描述 | 输入 |
---|---|---|
常量 | 常量波形。 | 无 |
阶跃 | 阶跃波形。 | 无 |
脉冲 | 脉冲波形 | 无 |
方波 | 方形波形 |
|
锯齿波 | 锯齿波形 |
|
正弦采样 | 采样正弦波波形 |
|
高斯噪声采样 | 按照输入频率,满足输入均值和标准差,并基于高斯分布采样的高斯噪声波形。 |
|
伪随机噪声 | 按照输入频率,满足上限和下限值,并基于二项分布的伪随机噪声波形。 |
|
泊松随机噪声 | 在 0 和 1 之间交替的泊松随机噪声波形 |
|
自定义 | 自定义分段线性波形。自定义值必须适合显示区域。 |
任一字段中的输入可以是计算结果为向量的任意 MATLAB 表达式。生成的各向量必须长度相等。 注意 如果您添加具有大量数据点(1 亿个或更多)的自定义波形,Signal Builder 会返回一条警告。然后,您可以取消此操作。 |
您也可以在 Signal Builder 窗口左下角的名称字段中编辑信号名称。
更改信号索引
要更改信号索引,请执行下列操作:
在 Signal Builder 中,选择该信号,然后选择信号 > 更改索引。
将显示对话框,其中的下拉列表字段包含信号的现有索引。
从下拉列表中选择另一个索引并选择确定。或者从 Signal Builder 窗口左下角的索引列表中选择一个索引。
隐藏信号
默认情况下,Signal Builder 窗口在组窗格中显示组波形。要隐藏某个波形,请执行下列操作:
在 Signal Builder 中,选择该波形,然后选择信号 > 隐藏。
要重新显示隐藏的波形,请选择组窗格,然后选择信号 > 显示。
从列表中选择该信号。您也可以通过双击 Signal Builder 信号列表中的名称隐藏波形和重新显示隐藏的波形。
手动创建信号组集
本主题介绍如何手动创建信号组集。如果您有信号数据文件,如来自测试用例的信号数据文件,请考虑如导入信号组集中所述导入此数据。
要创建一个可互换信号组集,请执行下列操作:
将 Signal Builder 模块的实例从 Simulink Sources 库拖放到您的模型中。
默认情况下,该模块表示包含输出方形波脉冲的单一信号源的单一信号组。
使用模块信号编辑器创建其他信号组、将信号添加到信号组、修改现有信号和信号组以及选择模块输出的信号组。
注意
每个信号组必须包含相同的信号数量。
将模块的输出连接到您的图。
模块会为模块可以输出的每个信号显示一个输出端口。
您可以根据需要在一个模型中创建任意数量的 Signal Builder 模块,其中每个模块表示一组不同的可互换信号源组。当一个组具有多个信号时,这些信号可能具有不同的结束时间。但是,Signal Builder 模块要求同一组内各信号的结束时间匹配。如果不匹配,Signal Builder 模块会保持具有较小结束时间的信号的最后一个值,以匹配结束时间。
请参阅使用信号组进行仿真了解有关在模型中使用信号组的信息。
以下过程的信号数据文件和数据重新格式化函数
以下部分中的过程使用以下三个文件:3Grp_3Sig.xls
、SigBldCustomFile.xls
和 createSignalBuilderSupportedFormat.m
。要访问这些文件,请打开实时脚本。
导入信号组集
此部分中的主题介绍如何将信号数据导入 Signal Builder 模块中。您应事先准备好要导入其内容的信号数据文件。例如,您可能有来自以前运行的测试用例的信号数据。请参阅从现有数据集导入信号组,了解 Signal Builder 模块接受的数据格式的描述。
Signal Builder 只接受双精度类型的信号。
如果您导入 Simulink.SimulationData.Dataset
数据集,该模块会将其导入为自己的组。
从现有数据集导入信号组
您可能希望将现有信号数据集输入到 Signal Builder 模块中。在 Signal Builder 窗口上执行文件 > 从文件导入命令会启动“导入文件”对话框。此对话框是模态对话框,意味着在对话框运行过程中焦点不能更改为另一个 MATLAB 窗口。如果您想在导入数据之后查看 Signal Builder 窗口中的更改,请执行下列操作之一:
关闭“导入文件”对话框。
将“导入文件”对话框和 Signal Builder 窗口并排放置。
注意
您不能撤消导入信号数据文件的结果。您也不能撤消在打开“导入文件”对话框之前执行的最后一个操作。在您关闭“导入文件”对话框时,Signal Builder 窗口上的撤消最后编辑和重做最后编辑按钮将灰显。无论您是否导入了数据文件,这些按钮都将灰显。
“导入文件”对话框接受以下正确格式的文件类型:
Microsoft® Excel® (
.xls
,.xlsx
)逗号分隔值 (CSV) 文本文件 (
.csv
)MAT 文件 (
.mat
)
提示
要从 Microsoft Excel 电子表格导入信号数据,请考虑使用 From Spreadsheet 模块。From Spreadsheet 模块在仿真期间以增量方式从电子表格中加载数据。如果您使用 From Spreadsheet 模块,则无需处理对电子表格值的更改。
您只能导入符合格式要求的数据集文件。
对于 Microsoft Excel 电子表格:
Signal Builder 模块将第一行解释为信号名称。如果您不指定信号名称,Signal Builder 模块将使用格式
Imported_Signal
指定默认信号名称,其中#
#
随着每个未命名信号的增加而递增。Signal Builder 模块将第一列解释为时间。在此列中,时间值必须是递增的。
Signal Builder 模块将其余列解释为信号。
如果有多个工作表:
每个工作表必须具有相同的信号数量(列数)。
每个工作表必须具有相同的信号名称集(如果有)。
每个工作表上的每个列必须具有相同的行数。
Signal Builder 模块将每个工作表解释为一个信号组。
此示例 3Grp_3Sig.xls
包含一个可接受格式的 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 工作区保存命令将变量保存到 MAT 文件。将此文件导入 Signal Builder 模块中。
将所有信号数据替换为所选数据
Simulink 软件会创建一个包含一个信号的默认 Signal Builder 模块。要替换此信号和该模块可能显示的所有其他信号数据,请执行下列操作:
创建一个模型,并将 Signal Builder 模块拖到该模型中。
双击该模块。
这将显示 Signal Builder 窗口,其中包含其默认值 Signal 1。
在 Signal Builder 中,选择文件 > 从文件导入。
将显示“导入文件”对话框。
在要导入的数据字段中,输入信号数据文件名称或点击浏览。
将显示文件浏览器。
如果您选择文件浏览器,请导航到一个信号数据文件并选择它。选择
3Grp_3Sig.xls
。注意
如果您尝试导入一个格式不正确的数据文件,会弹出一条错误消息。
选择要导入的数据窗格包含来自文件的信号数据。点击扩展按钮以显示所有信号。
选择要导入的信号。要导入所有信号,请点击全选。
从选择数据的放置列表中,选择对信号数据采取的操作。选择替换现有数据集。
确认选择按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。如果对话框检测到错误,会显示一条错误消息。
点击确认选择按钮。
点击应用以将现有信号数据替换为此文件的内容。
当选择替换现有数据集时,软件会提示您是否保存 Signal Builder 模块的现有内容。
按下表所述,根据需要点击一个按钮:
如需执行以下操作... 请点击... 在将 Signal Builder 模块的内容替换为新信号数据之前对其进行保存。
注意
此选择会提示您用您选择的模型名称保存 Signal Builder 模块。软件仅保存 Signal Builder 模块,而不保存其他模型内容。
是,另存为 替换 Signal Builder 模块的内容而不首先对其进行保存。 否,导入而不保存 停止替换过程。 取消 对于此示例,请选择否,导入而不保存以替换 Signal Builder 模块的内容。
Signal Builder 模块将用新信号数据进行更新。点击确定以关闭“导入文件”对话框并检查 Signal Builder 模块。
点击确定。
检查更新后的 Signal Builder 窗口以确认您的信号数据保持原样。
关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为
signalbuilder1
。
将所选信号追加到所有现有信号组
您可以从信号数据文件中导入信号,并将所选信号追加到所有现有信号组的末尾。如果要追加的信号名称不具有唯一性,则软件会对每个名称递增 1(或更大值)来对其重命名,直到它是一个唯一的信号名称。例如,如果模块和数据文件包含名为 thermostat
的信号,软件在追加时会将导入的信号重命名为 thermostat1
。如果您要添加名为 thermostat
的另一个信号,软件会将最后一个版本命名为 thermostat2
。
本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1
。
在 MATLAB 命令行窗口中,键入
signalbuilder1
。双击 Signal Builder 模块。
将显示 Signal Builder 窗口。
在 Signal Builder 窗口中,选择文件 > 从文件导入。
将显示“导入文件”对话框。
在要导入的数据字段中,输入信号数据文件名称或点击浏览。
将显示文件浏览器。
如果您选择文件浏览器,请导航到一个信号数据文件并选择它。选择
3Grp_3Sig.xls
。注意
如果您尝试导入一个格式不正确的信号数据文件,会弹出一条错误消息。
选择要导入的数据窗格包含来自文件的信号数据。点击扩展按钮以显示所有信号。
选择要导入的信号。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroup1 中的所有信号。
从选择数据的放置列表中,选择对信号数据采取的操作。选择将所选信号追加到所有组。
确认选择按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。如果信号数据选择不适当,确认选择将保持灰显状态。例如,如果您选择的信号数不同于您要替换的 Signal Builder 组中的信号数,确认选择始终保持灰显。
点击确认选择按钮。
确认操作还将启用确定和应用按钮。
点击应用以将选定信号追加到 Signal Builder 模块中的所有信号组。
Signal Builder 模块将用新信号数据进行更新。点击确定以关闭“导入文件”对话框并检查 Signal Builder 模块。
点击确定。
检查更新后的 Signal Builder 窗口以确认您的信号数据保持原样。请注意,软件已将来自信号数据文件的信号 Sig1、Sig2 和 Sig3 重命名为 Signal Builder 模块中的 Sig4、Sig5 和 Sig6。
关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为
signalbuilder2
。
将所选信号追加到有序排列的现有信号组
您可以将信号按照它们的选择顺序追加到有序信号组的末尾。这意味着您选择与目标信号组相同数量的信号,并按顺序将每个信号追加到一个对应的组中。该软件将每个追加的信号重命名为最后一个追加的信号的名称。
本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1
。
在 MATLAB 命令行窗口中,键入
signalbuilder1
。双击 Signal Builder 模块。
请注意 Signal Builder 模块中存在多少个组。例如,此 Signal Builder 模块有三个组:myGroup1、myGroupB 和 myGroup_Three。
在 Signal Builder 窗口中,选择文件 > 从文件导入。
在要导入的数据字段中,输入信号数据文件名称或点击浏览。
如果您选择文件浏览器,请导航到一个信号数据文件并选择它。选择
3Grp_3Sig.xls
。注意
如果您尝试导入一个格式不正确的信号数据文件,则会显示一个包含一条错误消息的弹出式窗口。
选择要导入的数据窗格包含来自文件的信号数据。点击扩展按钮以显示所有信号。
选择要导入的信号。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroup1 中的所有信号。
从所选数据的放置列表中,选择要对信号数据执行的操作。选择将所选信号追加到不同组(按顺序)。
确认选择按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。
点击确认选择按钮。
确认操作还将启用确定和应用按钮。
点击应用以追加信号。
Signal Builder 模块将用新信号数据进行更新。点击确定以关闭“导入文件”对话框并检查 Signal Builder 模块的三个组。
默认情况下,位于顶层的信号组 myGroup1 显示所有信号,包括新的 Sig4。
点击另一个组名称,例如 myGroupB。请注意 Sig4 对该组是存在的,但默认情况下是隐藏的。
要在此窗格上显示 Sig4,请在窗格的选择状态区域中双击 Sig4。图形将更新以反映 Sig4。
关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为
signalbuilder3
。
将信号组追加到现有组
您可以将一个或多个信号组追加到现有信号组列表的末尾。如果模块中已存在与要添加的信号组同名的信号组,软件会先将组名称递增 1(或更大值),直到它成为唯一名称之后,才会添加该信号组。例如,如果模块和数据文件包含名为 MyGroup1
的组,软件在追加时会将导入的组重命名为 MyGroup2
。如果您要添加名为 MyGroup1
的另一个组,软件会将最后一个版本命名为 MyGroup3
。
本主题使用将所有信号数据替换为所选数据中的过程所述的 signalbuilder1
。
在 MATLAB 命令行窗口中,键入
signalbuilder1
。双击 Signal Builder 模块。
将显示 Signal Builder 窗口。
请注意 Signal Builder 模块中存在多少个组,以及每个组中存在多少个信号。Signal Builder 模块要求所有组都具有相同的信号数量。例如,此 Signal Builder 模块有三个组:myGroup1、myGroupB 和 myGroup_Three。每个组中存在三个信号。
双击该模块。
在要导入的数据文本字段中,输入信号数据文件名称或点击浏览。
如果您选择文件浏览器,请导航到一个信号数据文件并选择它。选择
3Grp_3Sig.xls
。要导入的数据窗格包含来自该文件的信号数据。点击扩展按钮以显示所有信号。
计算此数据文件的各组中的信号数量。如果每个组中的信号数均等于模块中已有各组中的信号数,则可以将其中一个组追加到模块中。
选择要导入的组。在此示例中有三个组:myGroup1、myGroupB 和 myGroup_Three。选择 myGroupB。
从所选数据的放置列表中,选择要对信号组执行的操作。选择追加组。
确认选择按钮被激活。在 Signal Builder 模块执行指定的操作之前验证您的信号选择。
点击确认选择按钮。
确认操作还将启用确定和应用按钮。
点击应用以追加信号。
Signal Builder 模块将用新信号数据进行更新。点击确定以关闭“导入文件”对话框并检查 Signal Builder 模块的各组。
请注意,新信号组作为最后一个窗格添加。由于已存在名为 myGroupB 的信号组,软件会自动对新信号组的名称递增 1。选择 myGroupB1。
关闭 Signal Builder 窗口,并保存和关闭模型。例如,将模型另存为
signalbuilder4
。
将具有相同名称的信号追加到现有信号组
如果您追加的信号与 Signal Builder 模块中存在的某信号具有相同的名称,软件会将追加的信号的名称递增 1。软件重复递增,直到所追加信号的名称是唯一的。例如:
假定您的 Signal Builder 模块有一个信号组
myGroup1
,它包含信号 Sig1、Sig2 和 Sig3。将名为 Sig1 的信号追加到
myGroup1
。您会观察到软件在将 Sig1 追加到
myGroup1
之前会将其递增为 Sig4。
追加具有不同信号名称的信号组
如果您追加的信号组的信号名称不同于 Signal Builder 模块中存在的信号组,软件会将现有信号的名称更改为与所追加的信号相同。例如,
假定您的 Signal Builder 模块有一个信号组
myGroup1
,它包含信号 Sig1、Sig2 和 Sig3。追加一个名为
myGroup2
的信号组,其信号名称为 SigA、SigB 和 SigC。观察软件的如下行为:
追加
myGroup2
。对
myGroup1
中的信号进行重命名,使其与myGroup2
中的信号名称相同。
导入具有自定义格式的数据
本主题介绍如何导入具有自定义格式的信号数据。您应事先准备好要导入的信号数据文件。请参阅从现有数据集导入信号组,了解 Signal Builder 模块接受的数据格式的描述。如果您的数据未使用这些数据格式之一进行格式化,请使用以下工作流导入自定义格式的数据。例如,此工作流使用位于文件夹
(打开)中的以下文件:matlabroot
\help\toolbox\simulink\examples
SigBldCustomFile.xls
- 信号数据 Microsoft Excel 文件,它使用一种 Signal Builder 模块不接受的格式,例如:createSignalBuilderSupportedFormat.m
- 读取 Microsoft Excel 电子表格的自定义 MATLAB 函数。此示例函数使用 Signal Builder 模块支持的一种格式对自定义数据重新格式化,如下所示:grpNames
- 包含组名称字符向量的元胞数组,行数 = 1,列数 = 组数。sigNames
- 包含信号名称字符向量的元胞数组,行数 = 1,列数 = 信号数。time
- 包含时间数据的元胞数组,行数 = 信号数,列数 = 组数。data
- 包含信号数据的元胞数组,行数 = 信号数,列数 = 组数。
Signal Builder 对此自定义函数具有以下要求:
每个组中的信号数量必须相同。
每个组中的信号名称必须相同。
每个信号中的数据点数量必须相同。
time 和 data 元胞数组中的每个元素都存储一个实矩阵。此矩阵可以是 [1×N] 或 [N×1] 矩阵,其中 N 是每个信号中的数据点数量。
确定您的自定义信号数据的格式,例如:
SigBldCustomFile.xls
创建一个自定义 MATLAB 函数,该函数:
使用 MATLAB I/O 函数读取您的自定义格式的信号数据。例如,
createSignalBuilderSupportedFormat.m
。将自定义格式的信号数据格式化为 Signal Builder 模块接受的一种格式,例如 MAT 文件。
使用自定义 MATLAB 函数将自定义格式的信号数据写入 Signal Builder 模块接受的文件。例如:
createSignalBuilderSupportedFormat('SigBldCustomFile.xls', 'OutputData.mat')
将重新格式化的信号数据文件
OutputData.mat
导入 Signal Builder 模块中(请参阅导入信号组集)。
编辑波形
Signal Builder 允许您更改组输出的波形的形状、颜色、线型和粗细。
调整波形形状
Signal Builder 允许您通过用鼠标或箭头键选择并拖动线段和点或者编辑线段或点的坐标来更改波形。
选择波形
要选择波形,请用鼠标左键点击波形上的任意点。
Signal Builder 显示波形点以指示该波形处于选中状态。
要取消选择波形,请用鼠标左键点击位于波形轴上但不在波形本身上的任意点,或按 Esc 键。
点处理
您可以对波形中的点进行以下操作:
要选择波形中的点,请先选择波形。然后,将鼠标光标悬停在该点上方。光标形状发生更改以指示它在点的上方。
用鼠标左键点击该点。Signal Builder 在该点周围绘制一个圆以指示您的选择。
要插入点,请选择波形,然后按住 Shift 键并点击该点所在区域。
要取消选择该点,请按 Esc 键。
要删除一个点,请选择该点并按 Backspace 或 Delete 键。
要使用
signalbuilder
函数编辑点,请使用signalbuilder set
函数代替波形。您不能以编程方式删除点。
选择线段
要选择某条线段,请先选择包含该线段的波形。然后左键点击该线段。Signal Builder 使该线段加粗以指示它处于选中状态。
要取消选择该线段,请按 Esc 键。
移动波形
要移动波形,请选中它并使用键盘上的箭头键向所需的方向移动波形。每次按键都会将波形移至对齐网格上的下一个位置(请参阅对齐网格)或 0.1
英寸(如果未启用对齐网格)。
拖动线段
要将某条线段拖到新位置,请将鼠标光标置于该线段上方。鼠标光标形状发生更改以显示您可以拖动该线段的方向。
按鼠标左键并按照指示的方向将该线段拖到所需的位置。您还可以使用键盘上的箭头键移动所选线段。
拖动点
要沿信号振幅(垂直)轴拖动点,请将鼠标光标移动到该点上方。光标形状更改为圆形以指示您可以拖动该点。以平行于 y 轴的方向将该点拖动到所需位置。要沿时间(水平)轴拖动该点,请在按住 Shift 键的同时拖动该点。您还可以使用键盘上的箭头键移动所选点。
对齐网格
每个波形轴包含一个不可见的对齐网格,便于精确定位波形点。对齐网格的原点与波形轴的原点重合。当您放下所拖动的点或线段时,Signal Builder 会将该点或线段点移动到网格上最邻近的点或线段点。Signal Builder 坐标区菜单允许您独立地指定网格水平(时间)轴和垂直(振幅)轴间距。间距越细致,您在放置点时的自由度越大,但精准定位点的难度也越大。默认网格间距为 0,意味着您可以将点置于网格中的任何位置;即网格实际上是关闭的。使用坐标区菜单可选择您需要的间距。
插入和删除点
要插入一个点,请先选择波形。然后,按住 Shift 键用鼠标左键点击波形上您要插入点的位置点。要删除一个点,请选择该点并按 Del 键。
编辑点坐标
要更改点的坐标,请先选择该点。Signal Builder 在 Signal Builder 窗口底部的左点编辑字段中显示该点的当前坐标。要更改所选点的振幅,请编辑 Y 字段中的值或将其替换为新值,然后按 Enter 键。Signal Builder 将该点移动到其新位置。类似地,编辑 T 字段中的值以更改所选点的时间。
编辑线段坐标
要更改线段的坐标,请先选择该线段。Signal Builder 在 Signal Builder 窗口底部的左点和右点编辑字段中显示该线段端点的当前坐标。要更改某坐标,请编辑其对应编辑字段中的值,然后按 Enter 键。
更改波形颜色
要更改波形的颜色,请选择该波形,然后从 Signal Builder 信号菜单中选择颜色。Signal Builder 显示 MATLAB 颜色选择器。为波形选择一种新颜色。点击确定。
更改波形线型和粗细
Signal Builder 可以将波形显示为实线、虚线或点线。默认情况下,它使用实线。要更改波形的线型,请选择波形,然后从 Signal Builder 信号菜单中选择线型。从菜单中选择一种线型。
要更改波形的线条粗细,请选择波形,然后从信号菜单中选择线宽。编辑粗细值,然后点击确定。
Signal Builder 时间范围
Signal Builder 时间范围用来确定显式定义其输出的时间跨度。默认情况下,时间范围从 0 到 10 秒。模块时间范围的起点和终点时间都可以更改(请参阅更改 Signal Builder 时间范围)。
如果仿真在模块时间范围的开始时间之前开始,模块会根据其前两个定义的输出外插其初始输出。如果仿真的运行在模块时间范围以外,则默认情况下模块会根据最后定义的信号值为仿真的剩余部分输出外插的值。Signal Builder 仿真选项对话框允许您指定其他最终输出选项(请参阅最终时间后的信号值了解详细信息)。
注意
当您点击 Signal Builder 模块工具栏上的开始仿真按钮时,仿真使用模型的停止时间。波形中指定的时间范围的结束时间不是模型的停止时间。
更改 Signal Builder 时间范围
要更改时间范围,请从 Signal Builder 坐标区菜单中选择更改时间范围。
在该对话框中,根据需要编辑最短时间和最长时间字段,以分别反映新时间范围的开始和结束时间。
导出信号组数据
您可以将定义 Signal Builder 模块信号组的数据导出到 MAT 文件、MATLAB 工作区或 Signal Editor 模块。
要将 Signal Builder 信号数据(格式化为 Simulink.SimulationData.Dataset
)导出到 MAT 文件,请选择文件 > 导出数据 > 到 MAT 文件。
文件名 - 输入要放入数据的 MAT 文件的名称。
组索引 - 输入 1 或要从中导出数据的信号组的编号,指定为标量或向量。编号必须对应于模块中的现有组。
您也可以使用 signalbuilder get
函数返回一个或多个数据集。例如:
[ds1 ds2]=signalbuilder(block,'get',[group1 group2])
要将信号数据导出到 MATLAB 工作区,请选择文件 > 导出数据 > 到工作区。
默认情况下,Signal Builder 将数据导出到名为 channels
的工作区变量。要导出到具有其他名称的变量,请在变量名称字段中输入该变量名称。Signal Builder 将数据作为指定变量的值导出到工作区。
导出的数据是结构体数组。结构体的 xData
和 yData
字段包含定义当前所选信号组中信号的坐标点。
要访问 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 模块,请选择文件 > 导出数据 > 至信号编辑器模块。
从 Signal Builder 模块中,选择文件 > 导出 > 至信号编辑器模块。
提示
或者,点击
。
在文件浏览器中,指定文件名以包含保存的信号数据。
该模型中将出现 Signal Editor 模块。
要将信号数据导出到 Signal Editor 模块,请双击该模块,并在文件名参数中验证导出的文件名。
要在信号编辑器用户界面中查看导入的信号数据,请点击启动信号编辑器 (
)。
使用信号组进行仿真
您可以使用标准仿真命令运行包含 Signal Builder 模块的模型,也可以使用 Signal Builder 窗口中的运行或全部运行按钮(请参阅 运行所有信号组)。
如果您要捕获全部运行按钮生成的输入和输出,请考虑使用 SystemTest™ 软件。
激活信号组
在仿真期间,Signal Builder 模块始终输出活动信号组。如果该对话框处于打开状态,则活动信号组是 Signal Builder 窗口中为该模块选择的组。否则,活动组是上次关闭该对话框时所选的组。要激活一个组,请打开组 Signal Builder 窗口并选择该组。
连续运行不同信号组
Signal Builder 工具栏包含用于运行仿真的标准 Simulink 按钮。这有助于连续运行多个不同信号组。例如,您可以打开该对话框,选择一个组,运行一个仿真,选择另一个组,运行一个仿真等等,所有这些都是从 Signal Builder 窗口中进行。
运行所有信号组
要运行 Signal Builder 模块定义的所有信号组,请打开模块对话框并从 Signal Builder 工具栏中点击 按钮。全部运行按钮运行一系列仿真,它会为模块定义的每个信号组运行一个仿真。如果您在系统上安装了 Simulink Coverage 且正在使用模型覆盖率工具,全部运行按钮会将该工具配置为收集并保存 MATLAB 工作区中每个仿真的覆盖率数据,并在上次仿真结束时显示合并的覆盖率结果报告。这样,您就能够快速确定一组信号组对您的模型进行测试的情况。
注意
要停止由全部运行命令启动的一系列仿真,请在 MATLAB 命令行中输入 Ctrl+C。
来自 Signal Builder 模块的仿真
要控制来自 Signal Builder 模块的仿真,请选择文件 > 仿真选项。
最终时间后的信号值
此控件的设置确定在仿真运行时间超过模块定义的期限时 Signal Builder 模块的输出。
要对仿真剩余部分输出当前活动组中每个信号的最后一个定义的值,请选择保留最终值。例如:
要对仿真剩余部分输出从当前活动组中每个信号的最后一个定义的值外插的值,请选择外插。例如:
要对仿真剩余部分输出零,请选择设置为零。例如:
采样时间
要输出连续信号,请在采样时间参数中输入 0。例如,下图显示设置为在 10 秒的时间段内输出连续高斯波形的 Signal Builder 模块的输出。
要输出离散信号,请在此参数中输入信号的采样时间。下面的示例显示设置为以 0.5
秒的采样时间生成离散高斯波形的 Signal Builder 模块的输出。
启用过零
要让 Signal Builder 模块检测过零事件,请设置启用过零 on(默认值)。Signal Builder 模块对用于创建 Signal Builder 信号组的 From Workspace 模块设置过零检测。有关详细信息,请参阅过零检测。