一个万博1manbetx仿真软件®信号可以是标量、向量(1-D)、矩阵(2-D)或N-D。Si万博1manbetxmulink可变尺寸信号是一个信号,它的尺寸(维度元素的数量),以及它的值,都可以在模型仿真期间改变。但是,在模拟期间,维度的数量不能改变。此功能允许您使用不同的资源、约束和环境对系统进行建模。
你可以通过以下方法在你的Simulink模型中创建可变大小的信号:万博1manbetx
开关或多端口不同输入端口的开关块,具有不同大小的固定大小的信号。输出是一个可变大小的信号。
一个选择器块和开始和结束索引(端口)
索引选项。索引端口信号可以指定输入数据信号的不同子区域,这些子区域在仿真过程中产生大小可变的输出信号。
s功能块与输出端口配置为可变大小的信号。输出不仅包括信号的值,还包括信号的维数。
在Simuli万博1manbetxnk环境中,可变大小的信号可以通过以下两种方式之一在模型执行期间改变其大小:
在模型执行的每一步。
在执行输出方法期间,模型中的各种块修改信号的大小。
仅在有条件执行的子系统初始化期间。
大小变化发生在子系统(如Action、Enable和Function-Call)中的不同模式切换事件期间。
通过考虑带有状态的离散2-Tap Filter块,你可以看到关键的区别。
离散2-Tap滤波器
假设在仿真过程中,该滤波器的输入信号维数从4变为1。单位延迟块的状态何时以及如何从4调整到1以继续处理输入是不明确的。为了确保一致性,两个单位延迟块必须同步改变它们的状态行为。为了防止歧义,Simulink通常禁止在执行万博1manbetx过程中信号大小随时变化的环境中,状态数依赖于输入信号大小的块。
相反,考虑函数调用子系统中相同的离散2-Tap Filter块。假设这个子系统正在使用第二种方法来传播可变大小的信号。在这种情况下,输入信号的大小只有在子系统初始化时才从4变为1。在初始化时,子系统将其所有状态(包括两个Unit Delay块的状态)重置为初始值。重新设置子系统确保了对滤波器输入信号的状态分配没有歧义。
Mode-Dependent适应信号演示如何使用这两种以互补的方式传播可变大小的信号,以对复杂系统建模。
下面的示例演示如何在命令提示符或脚本中使用命令来确定信号线的大小是否可变。在大型模型或子系统或参考模型的层次结构中,使用此技术来确定一个信号是否由于上游块而具有可变大小。
模型的例子sldemo_varsize_basic
包含一个信号一个
这是a的下游开关块。
开放模型的例子。
选择总和输出信号被标记的块一个
.
在命令窗口输入以下命令将模型设置为已编译状态(类似于图表更新)。
sldemo_varsize_basic ([],[],[],“编译”)
获取块输出端口的句柄。
portHandles = get_param (gcb),“portHandles”);outPortHandle = portHandles.Outport;
查询编程参数CompiledPortDimensionsMode
输出端口。
varSize = get_param (outPortHandle,“CompiledPortDimensionsMode”)
varSize = 1
变量的值varSize
是1
,表示信号一个
变量的大小。
的值0
指示信号没有可变大小。
终止模型编译。
sldemo_varsize_basic ([],[],[],“术语”)
空信号是一个长度为的信号0
.例如,信号的大小[0]
,(0 x3)
,x0 [2]
,[2 x0x3]
都是空信号。万博1manbetxSimulink允许带有可变大小信号的空信号,并支持大多数元素操作。万博1manbetx但是,Simuli万博1manbetxnk不支持修改信万博1manbetx号维数的块的空信号。不支万博1manbetx持的块包括沿指定维度的重塑、置换和求和。
Simu万博1manbetxlink块数据类型支持表包括一万博1manbetx个完整的块列表,支持可变大小的信号。
查看表格:
打开一个Sim万博1manbetxulink模型。
在MATLAB®命令行输入showblockdatatypetable
.
一个单独的窗口与Simulink块数据类型支持表打开。万博1manbetx万博1manbetx
一个X
在适应的支持万博1manbetx列表示支持该块。万博1manbetx
提示
您还可以通过输入来查看表showblockdatatypetable
在命令提示符处。
初始信号大小外港块在有条件执行的子系统中取决于所选择的参数。
如果你设置传播大小可变的信号的父子系统中的参数在执行期间
,初始输出输出块的参数不能超过输入端口的最大大小。如果初始输出参数值是:
初始输出参数 | 初始输出信号大小 |
---|---|
nonscalar矩阵 | 初始输出信号的大小为初始输出参数。 |
一个标量 | 初始输出信号大小是一个标量。 |
默认的[] | 初始输出大小是一个空信号(维度都是零)。 |
如果你设置传播大小可变的信号的父子系统中的参数只有当使
,初始输出参数必须是标量值。
属性的输入重新传播大小时外港块中,初始输出值是使用标量参数值的标量展开设置的。
如果初始输出参数为默认值[]
, 万博1manbetxSimulink将初始输出视为接地值。
如果模型在开始时没有激活父子系统(t = 0
)时,子系统输出的当前大小对应于外港块被设置为最大大小。
当它的父子系统重新传播信号大小时,子系统可变大小输出信号的值也被重置为它们的初始输出参数值。
控制端口块位于有条件执行的子系统中。您可以设置传播大小可变的信号的参数在执行期间
,仅当恢复执行时
(行动端口),只有当使
(启用和触发或函数调用)。
开关块支持可变大小的信号,允许不同万博1manbetx大小的输入信号,并将输入信号的大小传播到输出信号。您可以设置允许不同的数据输入大小在“信号属性”窗格中,这些块的参数设置为开启或关闭。
下表描述了可变大小信号的限制。
限制 | 解决方案 |
---|---|
数组格式日志记录不支持可变大小的信号。万博1manbetx | 使用一个结构 ,结构随着时间的推移 ,或数据集 记录可变大小信号的格式。 |
基于帧的可变大小信号不能改变帧长度(第一维大小),但可以改变第二维大小(信道数)。使用基于帧的信号需要DSP系统工具箱™软件。 | 使用帧转换块将信号转换为基于采样的信号。 |
变大小信号必须有离散的采样时间。 | - - - - - - |
嵌入式编码器®不支持带有ERT 万博1manbetxS-functions、自定义存储类、函数原型控制、AUTOSAR、c++接口和ERT可重用代码接口的可变大小信号。 | - - - - - - |
万博1manbetxSimulink万博1manbetx不支持可变尺寸参数或DWork向量。 | - - - - - - |
快速加速模式不支持具有具有可变大小信号的根级输入端口的模型。万博1manbetx | - - - - - - |
用作引用模型的输入或输出的虚拟总线(模型块)不支持可变大小的信号。万博1manbetx | 将总线信号配置为非虚的。有关使用总线作为引用模型的输入或输出的更多信息,请参见在模型接口使用总线.有关控制总线虚拟的更多信息,请参见复合信号的类型. |
不支持可变大小的信号:万博1manbetx
|
- - - - - - |
不能将存储类应用于根级外港块(见模型接口元素的C代码生成配置(万博1manbetx仿真软件编码器)),如果进入该块的信号具有可变大小。 | 将存储类应用于信号线而不是外港块。 |