主要内容

通过使用 MATLAB Function 模块访问 Simulink.Signal 对象中的数据

R2026b

您可以通过在 MATLAB Function 模块代码中定义全局变量,从 MATLAB Function 模块访问 Simulink.Signal 对象中的数据。当您定义要在包含 MATLAB Function 模块的多个模型中访问的数据存储时,或需要在 MATLAB Function 模块中访问许多数据存储时,请使用和访问 Simulink.Signal 对象数据。您可以在多个 MATLAB Function 模块中访问数据。

在 MATLAB Function 模块中定义变量

要使用 Simulink.Signal 对象定义全局数据,并在 MATLAB Function 模块或该模块调用的代码中使用该数据,请执行以下操作:

  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. 在模型工作区或基础工作区中,创建一个 Simulink.Signal 对象。将 Simulink.Signal 对象指定给与全局变量同名的变量。

  5. 设置 Simulink.Signal 对象的 DataType、InitialValue 和 Dimensions 属性。数据类型无法继承,信号类型必须为实数或复数。

您可以将 Simulink.Signal 对象的作用域限定为模型或基础工作区。您可以在模型资源管理器中定义 Simulink.Signal 对象,或从 MAT 文件中加载这些对象。

从 Simulink.Signal 对象检索数据

此示例说明 MATLAB Function 模块如何使用存储在 Simulink.Signal 对象中的数据。

查看 Simulink.Signal 对象属性

查看 Simulink.Signal 对象的属性:

  1. 打开模型资源管理器。在建模选项卡的设计部分中,点击模型资源管理器。

  2. 在左窗格中,展开 MLFB_slsignal_model,然后点击模型工作区。中间窗格显示模型工作区中的数据。

  3. 点击 Simulink.Signal 对象 A。模型资源管理器的右窗格显示 A 的属性。在此示例中,数据类型为 double,维度为 1,初始值为 25,而复/实性为 real。

要在 MATLAB Function 模块中使用此数据,您无法将数据类型或复/实性设置为 auto。

检查 MATLAB Function 模块

打开 MATLAB Function 模块。函数代码声明全局变量 A,它与 Simulink.Signal 对象的名称匹配。该模块在每次执行时使用以下代码将 1 与 A 相加:

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

确保变量 A 使用来自对象的数据:

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

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

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

对模型进行仿真

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

另请参阅

模块

对象

工具

主题