主要内容

指定 MATLAB Function 模块变量的大小

您可以使用符号窗格和属性检查器 (自 R2022a 起)或通过模型资源管理器来指定访问模型数据的 MATLAB Function 模块变量的大小。您通过指定大小属性来定义大小。MATLAB Function 模块可以使用标量、向量或矩阵。您可以设置变量来继承大小或手动指定大小。

访问可变大小属性

要访问变量的大小属性,请执行以下操作:

  1. 双击 MATLAB Function 模块以打开 MATLAB Function 模块编辑器

  2. 函数选项卡中,点击编辑数据

    The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

  3. 符号窗格中,选择变量。这些变量属性显示在属性检查器中。

  4. 指定大小属性。

有关定义可访问模型数据的 MATLAB Function 模块变量的详细信息,请参阅Create 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 模块将列向量输出为一维数据。

默认情况下,MATLAB Function 模块保留其维度。要保持旧行为,请在属性检查器或模型资源管理器中清除将输出列向量解释为一维数据属性。您可以使用大小中的单个整数来定义输出列向量的大小。请参阅将输出列向量解释为一维数据 (自 R2021b 起)

如果您不知道所需的维度大小的上限,请使用 Inf (自 R2023b 起) 指定无界维度。例如,如果您不知道列的上界,但您最多有两行,请将大小设置为 [2 Inf]。要指定无界维度,请执行以下操作:

有关详细信息,请参阅Unbounded Variable-Size SignalsUnbounded Variable-Size Signal Basic Operations

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

  • 数值常量。

  • 算术运算符 +-*/

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

  • 对 MATLAB 函数 minmaxsize 的调用

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

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

避免使用可能导致名称冲突的变量

当一个 MATLAB Function 模块包含多个具有相同名称的变量时,该模块将使用具有最高优先级的变量来指定大小。

优先级可变
1封装参数
2模型工作区变量
3 MATLAB 基础工作区变量
4MATLAB Function 模块变量

为了避免混淆,不要使用在模型的多个级别中定义的变量名称来指定变量大小。

自定义大小属性示例

此示例使用一个具有输入变量的 MATLAB Function 模块,该输入变量根据基础工作区变量的值调整其大小。

MATLAB 函数接受一个输入信号,该输入信号根据基础工作区变量 k 的值更改大小。k 是您打开模型时由模型定义的一个数组。Gain 模块将输入信号乘以 k,并将此信号输出到 MATLAB Function 模块。为了使输入变量的大小与输入信号的大小匹配,MATLAB Function 模块为输入变量 u 指定自定义大小。打开 MATLAB Function 模块可查看变量和代码。

function y = fcn(u)
y = 2*u;

查看变量属性。在函数选项卡中,点击编辑数据。在符号窗格中,选择 u 以在属性检查器中查看属性。为了匹配输入的大小,该模块定义 u 并将大小属性设置为 size(k)

如果您更改 k 的大小,u 将与 k 的新大小匹配。

仿真和大小匹配

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

另请参阅

主题