配置 MATLAB Function 模块参数变量
您可以在 MATLAB Function 模块中使用参数变量来访问 MATLAB Function 模块的多个实例中的相同数据。您可以将参数变量赋值给工作区中的数据,或创建模块封装并将变量赋给封装参数。
将参数变量赋给工作区数据
MATLAB Function 模块参数变量从工作区变量或 Simulink.Parameter
对象中获取其值。在创建参数变量之前,必须在以下空间之一创建工作区变量或 Simulink.Parameter
对象:
Simulink® 模型工作区。
数据字典。有关详细信息,请参阅什么是数据字典?
MATLAB® 工作区。如果关闭 MATLAB,必须重新定义数据。
您可以直接在工作区中创建工作区变量或对象,将变量加载到 MAT 文件或 MATLAB 文件中,或使用自定义 MATLAB 代码创建变量。下表显示不同空间之间的差异:
数据存储空间 | 可见性 |
---|---|
模型工作区 | 仅在模型范围内可见 |
数据字典 | 与指定的 Simulink 模型共享 |
基础工作区 | 适用于所有 Simulink 模型。 |
有关详细信息,请参阅确定在何处存储 Simulink 模型的变量和对象。
创建工作区变量或对象后,您可以在 MATLAB Function 模块中创建参数变量:
打开该 MATLAB Function 模块。
在 MATLAB Function 模块编辑器的函数选项卡的准备部分中,点击编辑数据。
在符号窗格中,点击创建数据按钮 。
选择该变量并设置作用域属性。在类型列中,点击类型图标并选择参数数据。符号窗格指示变量的作用域设置为参数数据图标为 的参数。
在名称列中,将参数变量的名称设置为工作区变量或
Simulink.Parameter
对象的名称。
有关在 MATLAB Function 模块中定义变量的详细信息,请参阅Create and Define MATLAB Function Block Variables。
MATLAB Function 模块参数变量示例
此示例使用一个 MATLAB Function 模块,其中包含一个参数变量。在此示例中,基础工作区中的变量定义参数值的值。
MATLAB 函数将参数变量 const
乘以 Sine Wave 模块信号的值。打开 MATLAB Function 模块可查看代码。
function y = fcn(u, const)
y = const*u;
当模型加载时,它通过运行 PreLoadFnc 回调来定义基础工作区变量 const
。要查看回调,请在建模选项卡中,点击模型设置 > 模型属性。在“模型属性”窗口的回调选项卡中,点击 PreLoadFnc。
您可以通过在 MATLAB® 命令行窗口中重新定义变量来调整变量。
在 MATLAB Function 模块的函数选项卡中,点击编辑数据。在符号窗格中,点击 const
。属性检查器和符号窗格显示 const
是参数变量。
参数变量和工作区变量必须具有相同的名称。在此示例中,更改参数变量名称而不更改工作区变量名称会导致错误。
将参数变量赋给封装参数
通过创建模块封装并在封装中设置参数值,可以为 MATLAB Function 模块中的参数变量赋值。要将参数变量赋给封装参数,请执行以下操作:
打开该 MATLAB Function 模块。
在 MATLAB Function 模块编辑器的函数选项卡的准备部分中,点击编辑数据。
在符号窗格中,点击创建数据按钮 。
选择该变量并设置作用域属性。在类型列中,点击类型图标并选择参数数据。
在名称列中,设置参数变量的名称并退出该模块。
在模型中,封装 MATLAB Function 模块。有关为模块创建封装的详细信息,请参阅封装基础知识。
在“封装编辑器”窗口的参数和对话框窗格中,添加参数并使用与参数变量相同的名称。
保存封装并退出“封装编辑器”窗口。
封装 MATLAB Function 模块参数变量示例
此示例使用封装来设置参数变量的值。
MATLAB 函数将参数变量 const
乘以 Sine Wave 模块信号的值。点击 MATLAB Function 模块上的箭头图标以查看代码。
function y = fcn(u, const)
y = const*u;
您可以通过双击 MATLAB Function 模块来调整 const
的值。
模块封装中定义了设置正弦波乘数参数,您可以在封装编辑器中编辑该参数。MATLAB Function 模块将 const
定义为在属性检查器中的作用域设置为 Parameter
的数据。当您在符号窗格中选择 const
时,可以在属性检查器中看到此属性。
参数变量和封装参数必须具有相同的名称。在此示例中,更改参数变量名称而不更改封装参数名称会导致错误。如果您使用的是不可调参数,请确保在属性检查器中清除了可调属性。
参数变量层次结构
定义参数变量时,Simulink 使用相同的符号解析规则搜索和选择变量赋值。请参阅符号解析。如果对模块可见的多个工作区中存在同名的变量,该模块将使用工作区层次结构中最靠近该模块的数据。如果 MATLAB Function 模块位于一个封装子系统中,该模块将使用该子系统工作区中的数据。否则,该模块将使用模型工作区中的数据,然后依次使用 MATLAB 基础工作区和关联的 Simulink 数据字典中的数据。