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