万博1manbetx使用可变大小信号的模型
可变大小信号的产生和操作
这个示例模型展示了如何从多个固定大小的信号和从单个数据信号创建一个可变大小的信号。它还展示了一些可以应用于可变大小信号的操作。
有关支持可变大小信号的块的完整列表,请参见万博1manbetx万博1manbetxSimul万博1manbetxink块支持可变大小信号。
在MATLAB中®命令窗口,键入
sldemo_varsize_basic
在Simuli万博1manbetxnk中®编辑器中,选择显示>信号与端口>信号的维度。运行模拟或按
ctrl - d
。Simu万博1manbetxlink编辑器显示信号尺寸和线条样式。看到信号基础知识对信号线样式的解释。
这样你就可以看到模型中各个块的名称了显示>隐藏自动名称。
从固定大小的信号创建一个可变大小的信号
创建可变大小信号的一种方法是使用Switch块。Switch块的输入信号可以在维度数和大小上有所不同。
Switch块的输出是一个二维可变大小的信号,其最大大小为3 x2
。当你选择允许不同的数据输入大小参数在Switch块上时,Simulink不会从Constan万博1manbetxt1块展开标量值。
保存可变大小的信号数据
您可以在Switch块的输出中添加To Workspace块。由于模型已经有一个To Workspace块,第二个To Workspace块将数据保存到一个名为simout2
的值
现场记录实际信号值。如果记录的信号数据小于最大大小,则用nan或适当的值填充值。要获得这些信号值,输入:
simout2.signals。值ans(:,:,1) = 1 -1 -2 2 -3 3 ans(:,:,2) = 1 -1 -2 2 -3 3 ans(:,:,3) = 0 NaN NaN NaN NaN NaN
的valueDimensions
Field记录可变大小信号的尺寸。要获得尺寸,请键入:
simout2.signals.valueDimensions
显示了前三个时间步长的信号维度。
Ans = 3 2 3 2 1 1
从单个数据信号创建可变大小的信号
数据信号(Constant5)是一个3 x4
矩阵。脉冲发生器表示一个控制信号,它选择一个开始和结束索引值((1 2)
或3 [1]
).然后,选择器块使用索引值在每个时间步骤中选择数据信号的不同部分,并输出一个可变大小的信号。
查看信号大小的变化
Selector块的输出是2 x2
或3 x3
矩阵。因为可变大小信号的最大维数是3 x4
从数据信号得到矩阵,记录输出信号用nan填充。
使用Probe或Width块检查可变大小信号的当前尺寸和宽度。此外,您可以在作用域块上显示可变大小的信号,并使用to workspace块将可变大小的信号保存到工作空间。
处理可变大小的信号
模型的其余部分显示了可变大小信号可能的各种操作。操作包括使用增益块、和块、数学函数块、矩阵连接块。您可以用From、Goto、总线分配、总线创建器和总线选择器块连接可变大小的信号。
可变大小信号长度自适应
此示例模型对应于一个假设系统,其中模型随时间调整信号的长度。长度自适应是基于控制信号的值。当控制信号落在三个预定义范围中的一个范围内时,固定大小的原始数据信号变为可变大小的数据信号。
可变大小的信号连接到一个处理块,其中支持可变大小信号的块对其进行操作。万博1manbetx具有可变大小输入和输出信号的MATLAB函数块比支持可变大小信号的其他块具有更大的灵活性。万博1manbetx看到万博1manbetxSimul万博1manbetxink块支持可变大小信号。
要打开示例模型,在MATLAB命令窗口中输入:
sldemo_varsize_dataLengthAdapt
这样你就能清楚地看到模型中方块的名字显示>隐藏自动名称。
通过调整数据信号的长度来创建可变大小的信号
该模型生成一个数据信号,并将该信号转换为可变大小的信号。信号的大小取决于控制信号的值。原始数据信号是一个列向量,其值为1
来9
。
[1:9]。’ans = 1 2 3 4 5 6 7 8 9
在长度适应子系统中,信号大小子系统根据大小选择子系统(In2)的质量值生成一个索引。数据选择器块使用开始和结束索引来适应数据信号(In1)的长度,并输出一个可变大小的信号。
处理一个可变大小的信号
模型的中心部分处理可变大小的信号。MATLAB函数块以类似于信号上采样的方式在数据值之间添加零。信号的维数从9
来18
。Math Function块显示了可以对可变大小的信号进行的各种操作。
可视化可变大小的信号
模型的右侧部分确定信号宽度(大小),并使用一个范围来可视化宽度和处理过的数据信号。
模式相关的变大小信号
这个示例模型表示一个具有三种操作模式的系统。对于每种模式,要处理的数据信号具有不同的大小。
该模型中的Process子系统接收可变大小的信号,其中信号的大小取决于系统的运行模式。对于每个模式更改,状态流®图,模式控制逻辑,检测数据信号大小的变化。然后生成一个函数调用来重置Process子系统中的块。
要打开模型,在MATLAB命令窗口中输入:
sldemo_varsize_multimode
这样你就能清楚地看到模型中方块的名字显示>隐藏自动名称。
基于模式创建可变大小信号
模式选择子系统决定处理数据信号的模式,并输出一个模式值(1、2或3)。这个值有助于使用大小选择和数据子系统选择数据信号的长度。
大小选择子系统根据模式值创建索引值。在本例中,索引值为3 [1]
,(1 2)
,[1]
。
数据子系统取一个数据信号(常量块),并根据模式选择部分数据信号。输出是一个矩阵大小为的可变大小信号3 x3
,2 x2
,1 x1
。
原始数据信号的维数(常量块)是一个3 x3
。在将To Workspace块连接到信号线后,您可以在MATLAB命令窗口中输入以下命令查看信号:
Simout.signals.values ans(:,:,1) = 1 4 7 2 5 8 3 6 9
从数据子系统产生的可变大小信号也是一个3 x3
矩阵。对于较短的信号,矩阵用nan填充。
simout.signals.values ans(:,:,1) = 1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ans(:,:,2) = 1 4 NaN 2 5 NaN NaN NaN NaN ans(:,:,3) = 1 4 7 2 5 8 3 6 9
用有条件执行的子系统处理可变大小的信号
由于Process子系统包含一个Delay块,子系统在每个时间步重置并重新传播信号。该模型使用状态流图检测信号大小变化并重置Process子系统。
在功能块对话框中,并从传播可变大小信号的大小列表中,选择仅当启用时
。当模型启用该子系统时,选择此选项将指导Simulink软件在有条件执行的子系统中传播可变大小信号的大小。万博1manbetx信号大小只有在从禁用转换为启用时才能改变。有关使用包含状态的块处理信号大小变化的解释,请参见变大小信号如何传播。
状态流图确定信号的大小是否有变化。这个函数size_detect
在每个时间步中计算可变大小信号的宽度,并将当前宽度与之前的宽度进行比较。如果信号大小发生变化,图表将输出一个函数调用输出事件,该事件在Process子系统中重置并重新传播信号大小。
可视化数据
使用Probe块来可视化信号大小和信号尺寸。
因为信号是N x N
矩阵,信号维度线重叠在范围显示。
您可以使用显示块和Simulink调试器来可视化每个时间步骤的信号值。万博1manbetx