在全球范围内共享数据
你什么时候需要使用全局数据?
您可能需要使用全局数据MATLAB函数块如果:
你有多个MATLAB®函数使用全局变量,你想调用这些函数MATLAB函数块。
您有一个现有的模型,利用大量的全局数据和添加MATLAB函数这个模型块,你想避免弄乱你的模型与额外的输入和输出。
你想范围模型的数据部分的可见性。
使用MATLAB函数全局数据块
在仿真万博1manbetx软件®,你使用数据存储内存存储全球数据。实现数据存储内存使用数据存储内存块或万博1manbetxSimulink.Signal
对象。你如何存储全局数据的数量和范围取决于你的全局变量。有关更多信息,请参见局部和全局数据存储和选择如何存储全局数据。
如何MATLAB全局变量与数据存储内存
在仿真软件MATLAB函数中,全局声明不映射到万博1manbetxMATLAB全球工作区。相反,你注册全局数据MATLAB函数将数据映射到数据块存储记忆。这种差异使全局数据与仿真软件MATLAB函数互操作解决并提供诊断是否被滥用。万博1manbetx
一个全局变量解决层级结构最接近的数据存储在模型中具有相同名称的记忆。发生在两个不同的相同的全局变量MATLAB函数可能决心不同的数据块存储内存取决于模型的层次结构。你可以使用这个能力范围数据子系统的可见性。
如何使用全局变量与MATLAB函数块
在你使用全局数据MATLAB函数块,或任何物体调用的代码,您必须:
声明一个全局变量中MATLAB函数块,或任何代码调用MATLAB函数块。
注册一个数据存储内存块或
万博1manbetxSimulink.Signal
对象具有相同的名称作为全局变量了MATLAB函数块。
有关更多信息,请参见使用数据存储内存存储数据块和使用仿真软件存储数据。万博1manbetx信号对象。
选择如何存储全局数据
下面的表总结了是否使用数据存储内存块或万博1manbetxSimulink.Signal
对象。
如果你想: | 使用: | 更多信息: |
---|---|---|
使用少量的全局变量在一个模型,不使用模型参考。 | 数据存储内存块。请注意使用数据存储内存块作用域数据模型。 |
使用数据存储内存存储数据块 |
使用大量的全局变量在一个模型,不使用模型参考。 | 万博1manbetxSimulink.Signal 对象模型中定义的工作区。万博1manbetxSimulink.Signal 对象提供这些优势:
|
使用仿真软件存储数据。万博1manbetx信号对象 |
多个模型之间共享数据(包括引用的模型)。 | 万博1manbetxSimulink.Signal 基本工作空间中定义的对象请注意如果你使用数据存储内存块以及 |
使用仿真软件存储数据。万博1manbetx信号对象 |
使用数据存储内存存储数据块
这个模型展示了一个MATLAB函数块使用全局数据存储在一个数据存储内存块一个
。
打开dsm_demo.mdl模型。
双击MATLAB函数块打开MATLAB函数块编辑器。
的MATLAB函数块代码声明了一个全局变量
一个
。块修改的值一个
在每次执行。函数y = fcn% # codegen全球一个;= + 1;y =;
确保注册到全局变量MATLAB函数块。
在MATLAB函数块编辑器中,选择编辑数据打开端口和数据管理器对话框。
在港口和数据管理器,选择数据一个在左窗格中。这些数据使用相同的名称作为全局变量。
的范围数据的设置
数据存储内存
。
另请参阅港口和数据管理器。
双击数据存储内存块
一个
。在块参数对话框中,你可以看到的数据存储名称一个
全局变量的名称匹配。块的初始值25
。当你添加一个数据存储内存你的模型:
设置数据存储名称匹配的全局变量的名称MATLAB函数块代码。
集数据类型一个显式数据类型。数据类型是不可能的事情
汽车
。设置信号类型并指定一个初始值。
模拟模型。
的MATLAB函数块读取全局数据存储在的初始值
一个
和更新的价值一个
每次它执行。
存储数据使用万博1manbetxSimulink.Signal
对象
这个模型展示了一个MATLAB函数块使用全局数据存储在一个万博1manbetxSimulink.Signal
对象一个
。
打开万博1manbetxsimulink_signal_local模型。
该模型使用一个
万博1manbetxSimulink.Signal
对象模型中工作区。请注意
使用多个模型的全局数据,创建一个
万博1manbetxSimulink.Signal
对象的基本工作空间。确保
万博1manbetxSimulink.Signal
对象添加到模型资源管理器。从模型菜单,选择视图>模型浏览器。
在Model Explorer的左窗格中,选择模型的工作区
万博1manbetxsimulink_signal_local
模型。的内容窗格显示工作空间中的数据模型。
单击
万博1manbetxSimulink.Signal
对象一个
。在右窗格中,确保Model Explorer显示这些属性
一个
。属性 价值 数据类型 双
复杂性 真正的
维 1
初始值 5
另请参阅搜索和编辑模型浏览器使用。
双击MATLAB函数块开放编辑器。
的MATLAB函数块修改全局数据的价值
一个
每次它执行。函数y = fcn % # codegen全球;= + 1;y =;
确保
万博1manbetxSimulink.Signal
对象是注册MATLAB函数块。在MATLAB函数块编辑器中,选择编辑数据打开端口和数据管理器对话框。
在港口和数据管理器,选择数据一个在左窗格中。这些数据使用相同的名称作为全局变量。
设置范围的数据来
数据存储内存
。
另请参阅港口和数据管理器。
模拟模型。
的MATLAB函数块读取全局数据存储在的初始值
一个
和更新的价值一个
每次它执行。
使用数据存储诊断检测内存访问的问题
您可以配置您的模型为避免提供运行时和编译时诊断数据存储的问题。诊断中可用的配置参数对话框和参数对话框数据存储内存块。这些诊断可用数据存储内存块,不是万博1manbetxSimulink.Signal
对象。使用数据存储诊断方法的更多信息,见数据存储诊断。
请注意
如果你存储内存数组传递数据功能,优化等= foo ()
可能导致代码生成软件将整个数组的内容标记为读取或写入尽管只有一些元素被访问。
使用MATLAB函数中共享数据块的局限性
没有数据存储内存万博1manbetx支持:
MATLAB结构
大小可变的数据