Main Content

Index Vector

基于第一个输入的值在不同输入之间切换输出

  • Index Vector block

库:
Simulink / Signal Routing
HDL Coder / Signal Routing

描述

Index Vector 模块是特殊配置的 Multiport Switch 模块,需要指定一个数据输入,控制输入从 0 开始。模块输出是其索引与控制输入匹配的输入向量的元素。例如,如果输入向量为 [18 15 17 10],控制输入为 3,则与索引 3(从 0 开始)匹配的元素为 10,它将成为输出值。

要将 Multiport Switch 模块配置为 Index Vector 模块,请将数据端口数量设置为 1数据端口顺序设置为从 0 开始连续

有关 Multiport Switch 模块的详细信息,请参阅 Multiport Switch 模块参考页。

示例

全部展开

此示例说明 Index Vector 模块如何执行从 0 开始和从 1 开始的索引。

Index Vector 模块来自 Simulink Signal Routing 库。它是 Multiport Switch 模块的一种特殊配置。要将 Multiport Switch 模块配置为 Index Vector 模块,请将数据端口数量设置为 1,将数据端口顺序设置为 Zero-based contiguous

端口

输入

全部展开

控制信号,指定为标量。当控制输入不是整数值时,模块通过向零舍入将值截断为整数。

有关枚举类型的控制信号的信息,请参阅 Multiport Switch 模块参考页上的枚举控制端口的参数设置原则

限制

  • 如果控制信号为数值,则控制信号不能为复数。

  • 如果控制信号为枚举信号,模块将使用基础整数值来选择数据端口。

  • 如果基础整数没有对应的数据输入,将出现错误。

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

第一个数据输入,指定为标量或向量。当数据端口顺序设置为从 0 开始连续时,端口标签为 0;当数据端口顺序设置为从 1 开始连续时,端口标签为 1

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

输出

全部展开

模块根据控制信号值从输入数据向量中输出所选值。输出是标量。

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

参数

全部展开

常设

指定数据输入端口的排序类型。

  • 从 0 开始连续 - 模块使用从 0 开始的索引方式为连续数据端口排序。这是 Index Vector 模块的默认值。

  • 从 1 开始连续 - 模块使用从 1 开始的索引方式为连续数据端口排序。这是 Multiport Switch 模块的默认值。

  • 指定索引 - 模块使用不连续的索引方式为数据端口排序。只有具有两个或更多输入数据端口的配置才支持此值。

提示

  • 当控制端口为枚举类型时,请选择指定索引

  • 如果选择从 0 开始连续从 1 开始连续,请确认控制端口不是枚举类型。此配置已弃用,如果使用将会生成错误。您可以在模型上运行升级顾问,将此配置中的每个 Multiport Switch 模块替换为显式指定数据端口索引的模块。请参阅模型升级

  • 在仿真或代码生成中,应避免出现模块包含未使用的数据端口的情况。当控制端口为定点或内置数据类型时,请确认所有数据端口索引都可用该类型表示。否则,将发生以下模块行为:

    如果模块具有未使用的数据端口且数据端口顺序为:该模块产生:
    从 0 开始连续从 1 开始连续 警告
    指定索引 错误

依存关系

选择从 0 开始连续从 1 开始连续将启用数据端口数量参数。

选择指定索引将启用数据端口索引参数。

编程用法

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

指定模块的数据输入端口数。

依存关系

要启用此参数,请将数据端口顺序设置为从 0 开始连续从 1 开始连续

编程用法

模块参数Inputs
类型:字符向量
值:1 和 65536 之间的整数
默认值:'1'

信号属性

选中此复选框将要求所有数据输入端口具有相同的数据类型。清除此复选框时,模块允许数据端口输入具有不同数据类型。

编程用法

模块参数InputSameDT
类型:字符向量
值:'off' | 'on'
默认值:'off'

Simulink® 检查的输出范围的下限值。

Simulink 使用最小值执行下列操作:

注意

输出最小值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法

模块参数OutMin
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

Simulink 检查的输出范围的上限值。

Simulink 使用最大值执行下列操作:

注意

输出最大值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法

模块参数OutMax
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType

当您选择继承的选项时,模块的行为如下所示:

  • 继承: 从内部规则继承 - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:

    • 显式指定输出数据类型。

    • 显式指定默认数据类型(例如 fixdt(1,32,16)),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅 fxptdlg (Fixed-Point Designer)

    • 要指定您自己的继承规则,请使用继承: 通过反向传播继承,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。

  • 继承: 通过反向传播继承 - 使用驱动模块的数据类型。

  • 继承: 与第一个数据输入相同 - 使用第一个数据输入端口的数据类型。

编程用法

模块参数OutDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'string' | Simulink.ImageType(480,640,3) | '<data type expression>'
默认值'Inherit: Inherit via internal rule'

选中此选项将锁定此模块的输出数据类型设置,从而防止通过定点工具和定点顾问进行更改。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数LockScale
类型:字符向量
'off' | 'on'
默认值'off'

选择下列舍入模式之一。

向上

将正值和负值朝正无穷方向舍入。等同于 MATLAB® ceil 函数。

收敛

将数值舍入到最邻近的可表示值。如果出现结值,则舍入到最邻近的偶数整数。等同于 Fixed-Point Designer™ convergent 函数。

向下

将正值和负值朝负无穷方向舍入。等同于 MATLAB floor 函数。

最邻近值

将数值舍入到最邻近的可表示值。如果出现结值,则朝正无穷方向舍入。等同于 Fixed-Point Designer nearest 函数。

舍入

将数值舍入到最邻近的可表示值。如果出现结值,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer round 函数。

最简

自动选择是向负无穷大方向舍入还是向零舍入,以生成尽可能有效的舍入代码。

将数值向零舍入。等同于 MATLAB fix 函数。

编程用法

模块参数RndMeth
类型:字符向量
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值'Floor'

另请参阅

有关详细信息,请参阅舍入 (Fixed-Point Designer)

指定对溢出是进行饱和处理还是绕回处理。

  • off - 溢出将绕回到数据类型可以表示的合适值。

    例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。

  • on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

    例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

提示

  • 如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。

  • 如果您希望优化生成的代码的效率,请考虑清除此复选框。

    清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

  • 如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

  • 一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

模块参数SaturateOnIntegerOverflow
类型:字符向量
值:'off' | 'on'
默认值:'off'

选中此复选框将允许输入信号具有不同大小。

  • On - 允许输入信号具有不同大小,并将输入信号的大小传播给输出信号。在此模式下,模块产生可变大小的输出信号。

  • Off - 要求所有非标量数据输入信号的大小相同。

编程用法

参数:AllowDiffInputSizes
类型:字符向量
值:'on' | 'off'
默认值:'off'

模块特性

数据类型

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

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

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

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

版本历史记录

在 R2006a 之前推出