使用 MATLAB Function 模块访问 Data Store Memory 模块中的数据
您可以通过在 MATLAB Function 模块代码中定义全局变量从 MATLAB Function 模块访问 Data Store Memory 模块中的数据。当您想要访问单个模型中定义的数据存储数据,并且该模型不使用引用模型时,使用并访问 Data Store Memory 模块数据。您可以访问多个 MATLAB Function 模块中的数据。
在 MATLAB Function 模块中定义变量
要在 MATLAB Function 模块中或在 MATLAB Function 模块调用的代码中使用 Data Store Memory 模块数据:
在 MATLAB Function 模块或 MATLAB Function 模块调用的代码中声明全局变量。例如,要将变量
myVar定义为全局变量,请在函数声明语句下输入此代码。global myVar在 MATLAB Function 模块中,在符号窗格中添加一个与全局变量同名的变量 (自 R2022a 起)。有关如何使用符号窗格在 MATLAB Function 模块中定义变量的详细信息,请参阅Use the Symbols pane。
将变量的作用域属性设置为
Data Store Memory。在模型中,创建或打开一个 Data Store Memory 模块。将数据存储名称参数指定为与全局变量相同的名称。
在 Data Store Memory 模块中,设置初始值、数据类型和信号类型参数。数据类型无法继承,信号类型必须为实数或复数。
从 Data Store Memory 模块中检索数据
此示例显示 MATLAB Function 模块如何检索存储在 Data Store Memory 模块中的数据。

查看 Data Store Memory 模块参数
打开 Data Store Memory 模块以查看参数。在常设选项卡上,请注意数据存储名称参数是 A。打开信号属性选项卡。在此示例中,初始值参数为 25,数据类型参数为 double,而信号类型参数为 real。

要在 MATLAB Function 模块中使用此数据,您不能将数据类型设置为 Inherit: auto 或将信号类型设置为 auto。
检查 MATLAB Function 模块
打开 MATLAB Function 模块。函数代码声明全局变量 A,该变量与 Data Store Memory 模块的数据存储名称参数的名称匹配。该模块在每次执行时使用以下代码将 1 与 A 相加:
function y = fcn global A; A = A+1; y = A;
确保变量 A 使用该模块中的数据存储内存:
在函数选项卡的准备部分中,点击编辑数据。
在符号窗格中,选择变量
A。这些属性显示在属性检查器中。请确保作用域属性为
Data Store Memory。

对模型进行仿真
运行模型。模块执行发生在每个主时间步。MATLAB Function 模块的最终输出是 76。
检测内存访问问题
您可以通过配置模型来提供运行时和编译时诊断,从而检测数据存储的问题。“配置参数”窗口和“参数”窗口显示 Data Store Memory 模块的诊断信息。有关使用数据存储诊断的详细信息,请参阅数据存储诊断。
注意
如果将数据存储内存数组传递给函数,优化(例如 A = foo(A)),这可能会导致诊断表明即使只访问了某些元素,数组的全部内容也被读取或写入。