与其他模块共享数据
之间共享数据MATLAB系统和其他模块使用全球
关键字和数据存储内存块或金宝appSimulink.Signal
对象。您可能需要使用全局数据MATLAB系统块如果:
你有一个现有的模型,使用大量的全局数据,添加一个MATLAB系统这个模型块,你想避免弄乱你的模型与额外的输入和输出。
你想范围模型的数据部分的可见性。
数据共享与MATLAB系统块
在仿真金宝app软件®,你使用数据存储内存存储全球数据。实现数据存储内存使用数据存储内存块或金宝appSimulink.Signal
对象。你如何存储全局数据的数量和范围取决于你的全局变量。
范围规则在MATLAB系统共享数据块
的MATLAB系统块使用这些范围规则:
如果你使用相同的名称数据存储内存块和
金宝appSimulink.Signal
对象,数据存储内存块作用域数据模型。最近的一个全局变量解决层级结构数据存储内存块名称相同的模型。相同的全局变量出现在两个不同的MATLAB系统块可以解决不同数据存储内存根据模型的层次结构。你可以使用这个能力范围数据子系统的可见性。
使用MATLAB系统共享数据块
MATLAB系统支持数据块存储金宝app内存:
MATLAB®结构(公共汽车)
枚举数据类型
如何使用数据共享与MATLAB系统块吗
在你使用共享数据MATLAB系统布洛克:
声明一个全局变量在系统™,你交往对象MATLAB系统块。
您可以使用
全球
关键字在这些系统对象的方法:添加一个数据存储内存块或
金宝appSimulink.Signal
对象具有相同的名称作为全局变量系统中的对象。
之间共享数据模型使用引用金宝appSimulink.Signal
对象,定义金宝appSimulink.Signal
对象的基本工作空间和使用相同的全局变量的名称MATLAB系统块。
选择如何存储共享数据
您可以使用数据存储内存块或金宝appSimulink.Signal
对象存储共享数据。
类型的数据 | 全球数据存储方法 | 相关链接 |
---|---|---|
少量的全局变量在一个模型,不使用模型参考。 |
数据存储内存块。 请注意 使用数据存储内存块作用域数据模型。 |
|
大量的全局变量在一个模型,不使用模型参考。 |
|
|
多个模型之间的数据共享(包括引用的模型)。 |
请注意 如果你使用数据存储内存块以及 |
如何使用数据存储内存块的MATLAB系统块
声明一个全局系统中的关键字对象支持全局变量的方法。金宝app例如:
全球一个;
添加一个MATLAB系统阻止你的模型。
双击MATLAB系统块和系统对象关联。
添加一个数据存储内存块模型和设置:
数据存储名称匹配的全局变量的名称MATLAB系统块代码。
数据类型一个显式数据类型。
数据类型是不可能的事情
汽车
。信号类型。
初始值。
的初始值数据存储内存块不能不明。
使用数据存储内存MATLAB系统块
这个模型展示了一个MATLAB系统使用全球数据块存储在数据存储内存块B
。的MATLAB系统块是相关的globalSysObjMatrix1
系统对象。看到完整的模型,打开ex_globalsys_objmatrix1
模型。
这些块拖到一个新的模型:
MATLAB系统
数据存储内存
显示
创建一个系统对象关联MATLAB系统块。首先,从MATLAB系统块,创建一个基本的系统对象模板文件。
在MATLAB的编辑器,创建一个系统对象,代码如下。保存系统对象
globalSysObjMatrix1.m
。系统对象修改B
每次它执行。classdef globalSysObjMatrix1 < matlab。系统%全球/ DSM支持标量方法(访问=金宝app保护)函数例子setupImpl (obj) %执行一次性计算,如计算常数结束函数y = stepImpl (obj)全球B;B (: 1) = B (: 1) + 100;y = B;结束结束结束
双击MATLAB系统块和关联
globalSysObjMatrix1
系统对象的块。在模型中,双击数据存储内存块
B
。在信号属性选项卡中,输入一个初始值,例如:
(74 75 5 1;22日23日24日32;33 44 55 22)
模拟模型。
的MATLAB系统块读取全局数据存储在的初始值
B
和更新的价值B
每次它执行。这个模型执行步骤5次。保存并关闭您的模型。
如何设置金宝appSimulink.Signal
对象
创建一个金宝appSimulink.Signal
对象模型中工作区。
提示
创建一个金宝appSimulink.Signal
对象的基本工作空间使用多个模型的全局数据。
在模型浏览器中,导航到
model_name
>模型的工作空间在模型层次结构窗格。选择添加>金宝app仿真软件的信号。
确保这些设置申请
金宝appSimulink.Signal
对象:集数据类型一个显式数据类型。
数据类型是不可能的事情
汽车
。集维完全指定。
信号维度不能
1
或继承。设置复杂性。
指定一个初始值。
不能不明信号的初始值。
集的名字全局变量的名称。
使用一个金宝appSimulink.Signal
对象与一个MATLAB系统块
这个简单的模型展示了MATLAB系统块使用金宝appSimulink.Signal
与信号。MATLAB系统块是相关的globalSysObjScalar
系统对象。看到完整的模型,打开ex_globalsys_金宝appsimulink_signal_share
模型。
这些块拖到一个新的模型:
MATLAB系统
显示
创建一个系统对象关联MATLAB系统块。首先,从MATLAB系统块,创建一个基本的系统对象模板文件。
在MATLAB的编辑器,创建一个系统对象。保存系统对象
globalSysObjScalar.m
。系统对象修改B
每次它执行。classdef globalSysObjScalar < matlab。系统%全球/ DSM支持标量方法(访问=金宝app保护)函数例子setupImpl (obj) %执行一次性计算,如计算常数结束函数y = stepImpl (obj)全球B;B = B + 100;y = B;结束结束结束
双击MATLAB系统块和关联
globalSysObjScalar
系统对象的块。从模型上建模选项卡上,单击模型浏览器。
在Model Explorer的左窗格中,选择这个模型的模型空间。
的内容窗格显示工作空间中的数据模型。
在Model Explorer模型层次结构窗格中,导航到
model_name
>模型的工作空间。在内容窗格中,设置的名字来B
。导航回
model_name
>模型的工作空间。选择添加>金宝app仿真软件的信号。
让这些设置
金宝appSimulink.Signal
对象:属性 价值 数据类型 双
复杂性 真正的
维 1
初始值 25
模拟模型。
的MATLAB系统块读取全局数据存储在的初始值
B
和更新的价值B
每次它执行。模型运行5次步骤。保存并关闭您的模型。
使用数据存储诊断检测内存访问的问题
您可以配置您的模型提供运行时数据存储和编译时诊断避免问题。诊断中可用的配置参数对话框和参数对话框数据存储内存块。这些诊断可用数据存储内存块,不是金宝appSimulink.Signal
对象。使用数据存储诊断方法的更多信息,见数据存储诊断。
使用共享数据的局限性MATLAB系统块
的MATLAB系统不支持数据块存储内存大小可变的金宝app数据
使用与p系统共享数据对象
如果系统对象称为p - code,你必须实现getGlobalNamesImpl
方法来提供全局变量名称使用系统中的对象。例如:
classdef GlobalSysObjMatrix < matlab。系统%矩阵DSM支持:第一行的增量为1在金宝app每个时间步长方法(访问=保护)函数y = stepImpl (obj)全球B;B: B (1) = (1:) + 1;y = B;结束函数globalNames = getGlobalNamesImpl (~) globalNames = {B};结束结束结束