在看官方文档的时候,看到其中一个Simulink系统有一个U Y模块,用于选择输出位,但是在library里面没有找到,经过探索,发现这个模块是selector模块在设置完输出位后的样子
下面说说怎么用selector:
选择器块把输入向量或多维信号的选定或重新排序的index作为输出。
例如,假设一个6维信号U
,想输出Y = U(1:end,2:6,[1 3 5],Idx4:Idx4+7,Idx5,Idx6(1):Idx6(2))
其中 Idx4, Idx5, 和 Idx6 表示第4, 5和 6维的信号来自于哪个port,则按如下方式设置对话框
Row
代表维度
Input Options
代表选择方式
,设置如下:
这个维度所有index都保留
选择选择范围的起始信号位,以及输出长度,例如2-6位,对应index=2, Output Size=5,如果信号长度是可变的,不能用这个选项
- Index vector (dialog) (常用)
选择输出该维度的信号的源端(port)的哪些信号位,如本例中的[1 3 5]
,如果信号长度是可变的,不能用这个选项
道理类似 Starting index (dialog),但这里指的是port的信号位
- Starting and ending indices (port)
使用此选项会产生可变大小的输出信号。更新时,输出维度设置为与输入信号维度相同。
以上来自官方文档,有删减,官方文档链接
https://ww2.mathworks.cn/help/simulink/slref/selector.html?lang=en
推荐使用新推出的Vector Concatenate, Matrix Concatenate模块,MUX的功能被整合到这么模块了,链接:https://ww2.mathworks.cn/help/simulink/slref/vectorconcatenate.html