文档

在全球范围内共享数据

你什么时候需要使用全局数据?

您可能需要使用全局数据MATLAB函数块如果:

  • 你有多个MATLAB®函数使用全局变量,你想调用这些函数MATLAB函数块。

  • 您有一个现有的模型,利用大量的全局数据和添加MATLAB函数这个模型块,你想避免弄乱你的模型与额外的输入和输出。

  • 你想范围模型的数据部分的可见性。

使用MATLAB函数全局数据块

在仿真万博1manbetx软件®,你使用数据存储内存存储全球数据。实现数据存储内存使用数据存储内存块或万博1manbetxSimulink.Signal对象。你如何存储全局数据的数量和范围取决于你的全局变量。有关更多信息,请参见局部和全局数据存储选择如何存储全局数据

如何MATLAB全局变量与数据存储内存

在仿真软件MATLAB函数中,全局声明不映射到万博1manbetxMATLAB全球工作区。相反,你注册全局数据MATLAB函数将数据映射到数据块存储记忆。这种差异使全局数据与仿真软件MATLAB函数互操作解决并提供诊断是否被滥用。万博1manbetx

一个全局变量解决层级结构最接近的数据存储在模型中具有相同名称的记忆。发生在两个不同的相同的全局变量MATLAB函数可能决心不同的数据块存储内存取决于模型的层次结构。你可以使用这个能力范围数据子系统的可见性。

如何使用全局变量与MATLAB函数块

在你使用全局数据MATLAB函数块,或任何物体调用的代码,您必须:

  1. 声明一个全局变量中MATLAB函数块,或任何代码调用MATLAB函数块。

  2. 注册一个数据存储内存块或万博1manbetxSimulink.Signal对象具有相同的名称作为全局变量了MATLAB函数块。

有关更多信息,请参见使用数据存储内存存储数据块使用仿真软件存储数据。万博1manbetx信号对象

选择如何存储全局数据

下面的表总结了是否使用数据存储内存块或万博1manbetxSimulink.Signal对象。

如果你想: 使用: 更多信息:
使用少量的全局变量在一个模型,不使用模型参考。 数据存储内存块。

请注意

使用数据存储内存块作用域数据模型。

使用数据存储内存存储数据块
使用大量的全局变量在一个模型,不使用模型参考。 万博1manbetxSimulink.Signal对象模型中定义的工作区。万博1manbetxSimulink.Signal对象提供这些优势:
  • 你不需要增加很多数据存储内存块模型。

  • 你可以加载万博1manbetxSimulink.Signal从MAT-file对象。

使用仿真软件存储数据。万博1manbetx信号对象
多个模型之间共享数据(包括引用的模型)。 万博1manbetxSimulink.Signal基本工作空间中定义的对象

请注意

如果你使用数据存储内存块以及万博1manbetxSimulink.Signal,注意使用数据存储内存块作用域数据模型。

使用仿真软件存储数据。万博1manbetx信号对象

使用数据存储内存存储数据块

这个模型展示了一个MATLAB函数块使用全局数据存储在一个数据存储内存一个

  1. 打开dsm_demo.mdl模型。

  2. 双击MATLAB函数块打开MATLAB函数块编辑器。

    MATLAB函数块代码声明了一个全局变量一个。块修改的值一个在每次执行。

    函数y = fcn% # codegen全球一个;= + 1;y =;

  3. 确保注册到全局变量MATLAB函数块。

    1. MATLAB函数块编辑器中,选择编辑数据打开端口和数据管理器对话框。

    2. 在港口和数据管理器,选择数据一个在左窗格中。这些数据使用相同的名称作为全局变量。

    3. 范围数据的设置数据存储内存

    另请参阅港口和数据管理器

  4. 双击数据存储内存一个。在块参数对话框中,你可以看到的数据存储名称一个全局变量的名称匹配。块的初始值25

    当你添加一个数据存储内存你的模型:

    1. 设置数据存储名称匹配的全局变量的名称MATLAB函数块代码。

    2. 数据类型一个显式数据类型。数据类型是不可能的事情汽车

    3. 设置信号类型并指定一个初始值

  5. 模拟模型。

    MATLAB函数块读取全局数据存储在的初始值一个和更新的价值一个每次它执行。

存储数据使用万博1manbetxSimulink.Signal对象

这个模型展示了一个MATLAB函数块使用全局数据存储在一个万博1manbetxSimulink.Signal对象一个

  1. 打开万博1manbetxsimulink_signal_local模型。

    该模型使用一个万博1manbetxSimulink.Signal对象模型中工作区。

    请注意

    使用多个模型的全局数据,创建一个万博1manbetxSimulink.Signal对象的基本工作空间。

  2. 确保万博1manbetxSimulink.Signal对象添加到模型资源管理器。

    1. 从模型菜单,选择视图>模型浏览器

    2. 在Model Explorer的左窗格中,选择模型的工作区万博1manbetxsimulink_signal_local模型。

      内容窗格显示工作空间中的数据模型。

    3. 单击万博1manbetxSimulink.Signal对象一个

      在右窗格中,确保Model Explorer显示这些属性一个

      属性 价值
      数据类型
      复杂性 真正的
      1
      初始值 5

    另请参阅搜索和编辑模型浏览器使用

  3. 双击MATLAB函数块开放编辑器。

    MATLAB函数块修改全局数据的价值一个每次它执行。

    函数y = fcn % # codegen全球;= + 1;y =;

  4. 确保万博1manbetxSimulink.Signal对象是注册MATLAB函数块。

    1. MATLAB函数块编辑器中,选择编辑数据打开端口和数据管理器对话框。

    2. 在港口和数据管理器,选择数据一个在左窗格中。这些数据使用相同的名称作为全局变量。

    3. 设置范围的数据来数据存储内存

    另请参阅港口和数据管理器

  5. 模拟模型。

    MATLAB函数块读取全局数据存储在的初始值一个和更新的价值一个每次它执行。

使用数据存储诊断检测内存访问的问题

您可以配置您的模型为避免提供运行时和编译时诊断数据存储的问题。诊断中可用的配置参数对话框和参数对话框数据存储内存块。这些诊断可用数据存储内存块,不是万博1manbetxSimulink.Signal对象。使用数据存储诊断方法的更多信息,见数据存储诊断

请注意

如果你存储内存数组传递数据功能,优化等= foo ()可能导致代码生成软件将整个数组的内容标记为读取或写入尽管只有一些元素被访问。

使用MATLAB函数中共享数据块的局限性

没有数据存储内存万博1manbetx支持:

  • MATLAB结构

  • 大小可变的数据

相关的例子

更多关于

这个主题有帮助吗?