通过使用 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 模块中定义变量的详细信息,请参阅Create Variables by Using 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) 这样的优化,这可能导致诊断指示整个数组内容都标记为已读或已写,即使只访问了一些元素。