Main Content

Selector

从向量、矩阵或多维信号中选择输入元素

  • Selector block

库:
Simulink / Signal Routing
HDL Coder / Signal Routing

描述

Selector 模块根据指定的索引提取输入向量、矩阵或多维信号的选定元素。提取的信号可以按不同于输入信号的方式进行组合。

基于您为输入维数参数输入的值,将显示一个索引设置表。表中的每一行对应于输入维数中的一个输入维度。对于每个维度,您可以定义要使用的信号元素。可将向量信号指定为一维信号,将矩阵信号指定为二维信号。当您配置 Selector 模块进行多维信号操作时,模块图标将发生变化。

例如,假设一个 6 维信号具有从 1 开始的索引模式。Selector 模块对话框中的表将发生变化,使每个维度都有一个对应的行。如果如下表所示定义维度,则输出为 Y = U(1:end,2:6,[1 3 5],Idx4:Idx4+7,Idx5,Idx6(1):Idx6(2)),其中 Idx4Idx5Idx6 是维度 4、5 和 6 的索引端口。

索引选项索引输出大小
1全选  
2起始索引(对话框)25
3索引向量(对话框)[1 3 5] 
4起始索引(端口) 8
5索引向量(端口)  
6起始和结束索引(端口)  

可使用总线数组作为 Selector 模块的输入信号。有关定义和使用总线数组的详细信息,请参阅使用总线数组组合非虚拟总线

示例

全部展开

此示例显示两个 Selector 模块,它们具有相同类型的输入信号,但有两种不同索引选项设置。

两个 Selector 模块都从输入端口的输入信号中选择 7 个值。Selector1 模块输出固定大小的信号,而 Selector2 模块输出可变大小的信号,其编译后的信号维度是 10 而不是 7。

Selector1 模块将索引选项设置为 Index vector (port),它使用来自 Constant1 的输入信号作为索引向量。输入信号的维度为 7,因此 Display 模块显示 Constant1 模块的 7 个值。Selector2 模块将输入端口大小参数设置为 10,这是 Selector2 模块的最大输入信号大小。

Selector2 模块还将索引选项设置为 Starting and ending indices (port)。然后,输出设置为输入端口大小参数的大小 (10),即使输入信号的大小为 7 也是如此。

限制

  • 索引参数在仿真期间不可调。如果维度的索引选项设置为索引向量(对话框)起始索引(对话框),并且您在模块对话框中为对应的索引指定了符号值,包括 Simulink.Parameter 对象,则仿真开始时的瞬时值将在整个仿真中使用,并且该参数将在生成代码中作为内联值出现。请参阅使用模块参数值进行调优和试验。您可以使用索引端口动态调整选择索引。

端口

输入

全部展开

输入信号,亦即输出信号的元素来源。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

外部端口,用于指定对应输出元素的选择的索引。

您可以指定自定义宽度的整数(例如,15 位整数或 23 位整数)作为索引信号值。配置整数的宽度时,必须将模式指定为定点,其中字长小于或等于 128,斜率等于 1,偏置等于 0。有关指定定点数据类型的详细信息,请参阅使用数据类型助手指定数据类型

依存关系

要启用外部索引端口,请在索引选项表的对应行中,将索引选项设置为索引向量(端口)起始索引(端口)起始和结束索引(端口)

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

输出

全部展开

根据选定或重新排序的输入信号元素生成的输出信号。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

参数

全部展开

指定输入信号的维数。

编程用法

模块参数NumberOfDimensions
类型:字符向量
值:integer
默认值:'1'

指定索引模式。如果选择 One-based,则索引 1 指定输入向量的第一个元素。如果选择 Zero-based,则索引 0 指定输入向量的第一个元素。

编程用法

模块参数IndexMode
类型:字符向量
'One-based' | 'Zero-based'
默认值:'One-based'

按维度定义信号元素的索引方式。从列表中,选择:

  • 全选

    不需要进一步配置。所有元素都被选中。

  • 索引向量(对话框)

    启用索引列。输入元素索引向量。

  • 索引向量(端口)

    不需要进一步配置。

  • 起始索引(对话框)

    启用索引输出大小列。在索引列中输入要选择的元素范围的起始索引,在输出大小列中输入要选择的元素数。

  • 起始索引(端口)

    启用输出大小列。在输出大小列中输入要选择的元素数。

  • 起始和结束索引(端口)

    不需要进一步配置。

    使用此选项将生成可变大小的输出信号。当您更新时,输出维度设置为与输入信号的维度相同。在执行过程中,将根据提供给索引的信号来更新输出维度。

    记录输出信号数据时,未选择的信号用 NaN 值填充。

可以根据需要显示索引输出大小列。

编程用法

模块参数IndexOptionArray
类型:字符向量
'Select all' | 'Index vector (dialog)' | 'Index option (port)' | 'Starting index (dialog)' | 'Starting index (port)' | Starting and ending indices (port)
默认值:'Index vector (dialog)'

如果索引选项设置为索引向量(对话框),则输入所需的每个元素的索引。

如果索引选项设置为起始索引(对话框),则输入要选择的元素范围的起始索引。

编程用法

模块参数IndexParamArray
类型:字符向量
值:元胞数组
默认值:'{ }'

指定模块输出信号的宽度。

编程用法

模块参数OutputSizeArray
类型:字符向量
值:元胞数组
默认值:'{ }'

指定一维信号的模块输入信号的宽度。输入 -1 将从驱动模块继承。

编程用法

模块参数InputPortWidth
类型:字符向量
值:integer
默认值:'3'

指定采样时间间隔。要继承采样时间,请将此参数设置为 -1。有关详细信息,请参阅指定采样时间

依存关系

仅当您将此参数设置为 -1 以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

模块参数:SampleTime
类型:字符串标量或字符向量
默认值:"-1"

选中此复选框可让 Simulink® 在加速或快速加速模式下进行仿真时检查是否有任何索引值超出输入信号的相关维度的有效索引范围。如果索引超出范围,Simulink 将停止仿真并显示错误消息。

注意

如果不选中此复选框,超出范围的索引值可能导致在加速或快速加速模式下仿真期间出现未定义的行为。

无论是否选中此复选框,在普通模式仿真期间 Simulink 都会执行此检查。

编程用法

参数:RuntimeRangeChecks
类型:字符向量
'Off' | 'On'
默认值'Off'

模块特性

数据类型

Boolean | double | enumerated | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2006a 之前推出

全部展开