您可能需要将全局数据与MATLAB函数如果:
你有多个MATLAB®使用全局变量并希望从中调用这些函数的函数MATLAB函数阻碍。
您有一个使用大量全局数据的现有模型,您正在添加一个MATLAB函数块到该模型,您希望避免使用额外的输入和输出使模型混乱。
您希望将数据的可见性限定在模型的各个部分。
在仿真金宝app软件®,使用数据存储内存存储全局数据。使用数据存储存储器块或金宝app模拟信号
对象。如何存储全局数据取决于全局变量的数量和作用域。有关更多信息,请参见本地和全球数据存储和选择如何存储全局数据.
在Simulink中的MATLAB函数中,全局金宝app声明不会映射到MATLAB全局工作区MATLAB函数块将数据映射到数据存储内存。这种差异允许MATLAB函数中的全局数据与Simulink求解器进行互操作,并在它们被误用时提供诊断。金宝app
全局变量按层次结构解析为模型中具有相同名称的最近的数据存储内存。同一全局变量出现在两个不同的MATLAB函数根据模型的层次结构,块可能解析为不同的数据存储内存。您可以使用此功能来确定数据对子系统的可见性。
在应用程序中使用全局数据MATLAB函数块,或在此块调用的任何代码中,您必须:
声明一个全局变量MATLAB函数类调用的任何代码中MATLAB函数块。
注册一个数据存储存储器块或金宝app模拟信号
对象,该对象与全局变量同名MATLAB函数块。
有关更多信息,请参见使用数据存储内存块存储数据和使用Simulink存储数据。金宝app信号对象.
下表总结了是否使用数据存储存储器块或金宝app模拟信号
对象。
如果你想: | 使用: | 更多信息: |
---|---|---|
在单个模型中使用少量不使用模型引用的全局变量。 | 数据存储存储器阻碍。 请注意 使用数据存储存储器块将数据范围限定为模型。 |
使用数据存储内存块存储数据 |
在不使用模型引用的单个模型中使用大量全局变量。 |
|
使用Simulink存储数据。金宝app信号对象 |
在多个模型(包括参考模型)之间共享数据。 |
请注意 如果你使用数据存储存储器block以及 |
使用Simulink存储数据。金宝app信号对象 |
该模型演示了MATLAB函数块使用存储在数据存储存储器块一个
.
打开dsm_demo.mdl模型。
双击MATLAB函数块打开MATLAB函数块编辑器.
的MATLAB函数块代码声明一个全局变量一个
. 块将修改的值一个
在每次执行期间。
作用y = fcn% # codegen全球一个;= + 1;y =;
确保全局变量已注册到MATLAB函数块。看到定义MATLAB函数块数据.
在MATLAB函数块编辑器中,选择端口和数据管理器打开“端口和数据管理器”对话框。
在端口和数据管理器中,选择数据一个在左侧窗格中。该数据使用与全局变量相同的名称。
的范围的值数据存储存储器
.
双击数据存储存储器块一个
. 在“块参数”对话框中,可以看到数据存储名称一个
匹配全局变量名。块的初始值为25
.
当你添加一个数据存储存储器你的模型:
设置数据存储名称来匹配全局变量的名称MATLAB函数块代码。
集数据类型转换为显式数据类型。数据类型不能为汽车
.
设置信号类型并指定一个初始值.
模拟模型。
的MATLAB函数块读取存储的全局数据的初始值一个
并更新的值一个
每次执行的时候。
金宝app模拟信号
对象该模型演示了MATLAB函数块使用存储在金宝app模拟信号
对象一个
.
打开金宝appsimulink_signal_local模型。
该模型使用金宝app模拟信号
对象在模型工作区中。
请注意
要使用具有多个模型的全局数据,请创建金宝app模拟信号
对象在基本工作区中。
确保金宝app模拟信号
对象添加到模型管理器中。
在建模选项卡上,单击模型浏览器.
在模型管理器的左窗格中,选择模型的模型工作区金宝appsimulink_signal_local
模型。
的内容窗格显示模型工作区中的数据。
点击金宝app模拟信号
对象一个
.
在右侧窗格中,确保Model Explorer显示这些属性一个
.
属性 | 价值 |
---|---|
数据类型 | 双 |
复杂性 | 真实的 |
维 | 1 |
初始值 | 5 |
另请参阅模型浏览器.
双击MATLAB函数块以打开其编辑器。
的MATLAB函数块修改全局数据的值一个
每次执行的时候。
函数y=fcn%#codegen全局A;A=A+1;y=A;
确保金宝app模拟信号
对象注册到MATLAB函数块。
在MATLAB函数块编辑器中,选择端口和数据管理器打开“端口和数据管理器”对话框。
在端口和数据管理器中,选择数据一个在左侧窗格中。该数据使用与全局变量相同的名称。
设置范围的数据数据存储存储器
.
模拟模型。
的MATLAB函数块读取存储的全局数据的初始值一个
并更新的值一个
每次执行的时候。
您可以配置模型以提供运行时和编译时诊断,以避免数据存储问题。诊断在配置参数对话框和参数对话框中可用数据存储存储器块。这些诊断可用于数据存储存储器仅限区块,不适用于金宝app模拟信号
对象。有关使用数据存储诊断的更多信息,请参阅数据存储诊断.
请注意
如果您将数据存储的内存数组传递给函数,优化,例如A=foo(A)
可能导致代码生成软件将数组的全部内容标记为读或写,即使只访问了一些元素。
没有数据存储存储器块的支持:金宝app
MATLAB值类
大小可变的数据