主要内容

通过使用 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 模块数据,请执行以下操作:

  1. MATLAB Function 模块或 MATLAB Function 模块调用的代码中声明全局变量。例如,要将变量 myVar 定义为全局变量,请在函数声明语句下输入以下代码。

    global myVar
  2. MATLAB Function 模块中,在符号窗格中添加与全局变量同名的变量 (自 R2022a 起)。有关如何使用符号窗格在 MATLAB Function 模块中定义变量的详细信息,请参阅Create Variables by Using the Symbols Pane

  3. 将变量的作用域属性设置为 Data Store Memory

  4. 在模型中,创建或打开一个 Data Store Memory 模块。将数据存储名称参数指定为与全局变量相同的名称。

  5. 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 模块的数据存储名称参数的名称匹配。该模块在每次执行时使用以下代码将 1A 相加:

function y = fcn
    global A;
    A = A+1;
    y = A;

确保变量 A 使用该模块中的数据存储内存:

  1. 函数选项卡的准备部分中,点击编辑数据

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

  3. 请确保作用域属性为 Data Store Memory

对模型进行仿真

运行模型。模块执行发生在每个主时间步。MATLAB Function 模块的最终输出是 76

检测内存访问问题

您可以通过配置模型以提供运行时和编译时诊断来检测数据存储的问题。“配置参数”窗口和“参数”窗口显示 Data Store Memory 模块的诊断信息。有关使用数据存储诊断的详细信息,请参阅数据存储诊断

注意

如果您向函数传递数据存储内存数组,例如 A = foo(A) 这样的优化,这可能导致诊断指示整个数组内容都标记为已读或已写,即使只访问了一些元素。

另请参阅

模块

对象

工具

主题