Main Content

指定 MATLAB Function 模块变量的大小

您可以使用符号窗格和属性检查器,或使用模型资源管理器来指定 MATLAB Function 模块中变量的大小。MATLAB Function 模块可以使用标量、向量或矩阵。有关创建、删除和设置变量属性的详细信息,请参阅Create and Define MATLAB Function Block Variables定义和修改变量数据类型。您可以设置变量来继承大小或手动指定大小。

Simulink 继承大小

大小默认为 -1,这意味着变量根据作用域属性的值继承其大小:

作用域描述
输入从连接到关联输入端口的 Simulink® 信号继承大小。
输出从连接到关联输出端口的 Simulink 信号继承大小。
参数从关联的 Simulink 或 MATLAB® 参数继承大小。请参阅配置 MATLAB Function 模块参数变量

作用域属性设置为“数据存储内存”的变量始终继承其大小。

自定义数据大小

您也可以手动将变量大小设置为标量、向量或矩阵。要将大小指定为标量,请将大小设置为 1 或清除该参数。要将大小指定为向量或矩阵,请以 [row column] 格式输入具有正整数的行向量。例如,要定义大小为 6 的列向量,请将大小属性设置为 [6 1]。要定义大小为 5 的行向量,请将大小属性设置为 [1 5]。要定义数据大小为 3×3 的矩阵,请将大小属性设置为 [3 3]

注意

在 R2021b 之前,MATLAB Function 将列向量输出为一维数据。在 R2021b 及更高版本中,MATLAB Function 模块默认保留其维度。要保持旧行为,请在属性检查器或模型资源管理器中清除将输出列向量解释为一维数据属性。清除此属性后,可以使用大小中的单个整数来定义输出列向量的大小。请参阅Interpret output column vectors as one-dimensional data

您也可以使用表达式设置大小属性。表达式可以包括:

  • 数值常量。

  • 算术运算符,限制为 +-*/

  • 作用域属性设置为 Parameter 时的变量的名称

  • 对 MATLAB 函数 minmaxsize 的调用

这些表达式必须输出一个正整数或以 [row column] 格式输入的两个正整数。否则,指定的大小会在模型编译时产生错误。例如,假设一个 MATLAB Function 模块具有变量 kxy,这些数据的作用域属性都设置为“参数”。此处,k 是正整数,xy 是矩阵。如果为该模块创建新变量,可以使用以下任一表达式定义大小属性:

k+1
size(x)
min(size(y))

仿真和大小匹配

编译模型后,模型资源管理器中的 CompiledSize 列显示仿真中使用的实际大小。如果大小属性的值不是 -1 并且与实际大小不匹配,则在模型编译期间会出现不匹配错误。

另请参阅

相关主题