Main Content

Assignment

为指定的信号元素赋值

  • Assignment block

库:
Simulink / Math Operations
HDL Coder / Math Operations

描述

Assignment 模块为指定的信号元素赋值。您可以通过在模块对话框中输入索引,或者通过将一个或多个外部索引源连接到模块,来指定要赋值的元素的索引。模块数据端口 U 处的信号指定要赋给 Y 的值。该模块将 Y 的指定元素替换为数据信号的元素。

基于您为输出维度的数量参数输入的值,将显示一个索引选项表。表中的每一行对应于输出维度的数量中的一个输出维度。对于每个维度,您可以定义要使用的信号元素。可将向量信号指定为一维信号,将矩阵信号指定为二维信号。要启用外部索引端口,请在表的对应行中将索引选项设置为索引向量(端口)起始索引(端口)

例如,假设一个 5 维信号具有从 1 开始的索引模式。Assignment 模块对话框中的表将发生变化,使每个维度都有一个对应的行。如果您使用以下选项定义每个维度:

索引选项索引
1全部赋值 
2索引向量(对话框)[1 3 5]
3起始索引(对话框)4
4起始索引(端口) 
5索引向量(端口) 

所赋的值为 Y(1:end,[1 3 5],4:3+size(U,3),Idx4:Idx4+size(U,4)-1,Idx5)=U,其中 Idx4Idx5 是维度 4 和 5 的输入端口。

在普通模式下使用 Assignment 模块时,Simulink® 将模块输出初始化为零,即使模型没有显式初始化它们也是如此。在加速模式下,Simulink 将模型转换成 S-Function。这涉及到代码生成。生成的代码可能不会隐式初始化模块输出。在这种情况下,您必须显式初始化模型输出。

您可以使用模块为向量、矩阵或多维信号赋值。

可使用总线数组作为 Assignment 模块的输入信号。

条件子系统中的 Assignment 模块

如果在条件子系统模块中放置一个 Assignment 模块,在许多情况下会插入一个隐藏的信号缓冲区(相当于 Signal Copy 模块),并且将来自 Assignment 模块的信号与部分写入合并会导致错误。

但是,如果选择条件子系统 Outport 模块的确保输出端口为虚拟端口参数,将对此类情况提供支持,并且可以使用 Assignment 模块部分写入数组。请参阅Ensure Output Port Is Virtual

限制

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

端口

输入

全部展开

输出信号的初始化信号。如果元素未被赋予另一个值,则输出元素的值与此输入信号值匹配。

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

赋给输出元素的值(当指定了该值时)。

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

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

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

依存关系

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

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

输出

全部展开

对指定元素赋值后的输出信号。

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

参数

全部展开

键入输出信号的维数。

编程用法

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

选择索引模式。如果选择从 1 开始,则索引 1 指定输入向量的第一个元素。如果选择从 0 开始,则索引 0 指定输入向量的第一个元素。

编程用法

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

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

菜单项操作
全部赋值

所有元素都被分配。

索引向量(对话框)

启用索引列。输入元素的索引。

索引向量(端口)

索引端口定义元素的索引。

起始索引(对话框)

启用索引列。输入要赋值的元素范围的起始索引。

起始索引(端口)

索引端口定义要赋值的元素范围的起始索引。

如果您为表中的任何维度选择索引向量(端口)起始索引(端口),则可以为初始化输出(Y) 参数指定下列值之一:

  • 使用输入端口 <Y0> 初始化

  • 指定表中每个维度的大小

否则,Y0 始终初始化输出端口 Y

索引输出大小列显示为具有相关性。

编程用法

参数:IndexOptionArray
类型:字符向量
值: 'Assign all' | 'Index vector (dialog)' | 'Index option (port)' | 'Starting index (dialog)' | 'Starting index (port)'
默认值:'Index vector (dialog)'

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

如果索引选项设置为起始索引(对话框),则输入要选择的元素范围的起始索引。从起点开始的元素数量由此维度在 U 处的大小决定。

编程用法

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

输入模块输出信号的宽度。

依存关系

要启用此列,请为初始化输出(Y) 参数选择指定表中每个维度的大小

编程用法

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

指定如何初始化输出信号。

  • 使用输入端口 <Y0> 初始化 - 位于输入端口 Y0 的信号初始化输出。

  • 指定表中每个维度的大小 - 要求您在输出大小参数中指定模块输出信号的宽度。如果输出具有未分配的元素,则这些元素的值未定义。

依存关系

当您为一个或多个维度将索引选项设置为索引向量(端口)起始索引(端口) 时启用。

编程用法

参数:OutputInitialize
类型:字符向量
'Initialize using input port <Y0>' | 'Specify size for each dimension in table'
默认值:'Initialize using input port <Y0>'

指定当您还有未分配的输出元素时是否生成警告或错误。选项包括:

  • 警告 - Simulink 显示警告并继续进行仿真。

  • 错误 - Simulink 终止仿真并显示错误。

  • - Simulink 不执行任何操作。

依存关系

要启用此参数,请将一个或多个维度的索引选项设置为索引向量(端口)起始索引(端口),然后将初始化输出(Y) 设置为指定表中每个维度的大小

编程用法

参数:DiagnosticForDimensions
类型:字符向量
值:'Error' | 'Warning' | 'None'
默认值:'Warning'

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

依存关系

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

编程用法

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

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

注意

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

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

编程用法

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

模块特性

数据类型

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

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

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

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

版本历史记录

在 R2006a 之前推出

全部展开