以编程方式在字典中存储数据
一个数据字典存储模型金宝app®模型数据,并提供比MATLAB数据管理功能®工作区(见基础工作区或模型什么是数据字典?)。以编程方式与数据字典:
创建一个
金宝appSimulink.data.Dictionary
对象,该对象表示目标字典。创建一个
金宝appSimulink.data.dictionary.Section
对象,该对象表示目标部分,例如设计数据部分。使用对象与条目存储在部分并添加条目。可选地,创建
金宝appSimulink.data.dictionary.Entry
每个代表一个条目的对象在目标部分。使用这些对象与个体在目标部分的条目。
以编程方式访问变量的目的彻底阻止参数值,可以考虑使用金宝appSimulink.SimulationInput
修改变量的对象而不是通过编程接口的数据字典。看到优化、估计和扫描块参数值。
以编程方式与之交互嵌入式编码器部分数据字典,看到的通过编程方式创建数据接口配置(嵌入式编码)。
数据字典的条目添加到设计数据部分
代表了数据字典的设计数据部分
myDictionary_ex_API.sldd
与一个金宝appSimulink.data.dictionary.Section
对象命名dDataSectObj
。myDictionaryObj = 金宝appSimulink.data.dictionary.open (“myDictionary_ex_API.sldd”);dDataSectObj = getSection (myDictionaryObj,设计数据的);
在设计数据的部分
myDictionary_ex_API.sldd
,添加条目myNewEntry
与价值237年
。addEntry (dDataSectObj“myNewEntry”,237)
重命名数据字典条目
重命名一个条目在设计数据、配置或其他数据字典的数据部分。
代表了数据字典条目
fuelFlow
与一个金宝appSimulink.data.dictionary.Entry
对象命名fuelFlowObj
。fuelFlow
定义在数据字典吗myDictionary_ex_API.sldd
。myDictionaryObj = 金宝appSimulink.data.dictionary.open (“myDictionary_ex_API.sldd”);dDataSectObj = getSection (myDictionaryObj,设计数据的);fuelFlowObj = getEntry (dDataSectObj,“fuelFlow”);
重命名数据字典条目。
fuelFlowObj。Name =“fuelFlowNew”;
增量数据字典条目的价值
代表了数据字典条目
fuelFlow
与一个金宝appSimulink.data.dictionary.Entry
对象命名fuelFlowObj
。fuelFlow
定义在数据字典吗myDictionary_ex_API.sldd
。myDictionaryObj = 金宝appSimulink.data.dictionary.open (“myDictionary_ex_API.sldd”);dDataSectObj = getSection (myDictionaryObj,设计数据的);fuelFlowObj = getEntry (dDataSectObj,“fuelFlow”);
目标条目的值存储在一个临时变量。增加临时变量的值。
temp = getValue (fuelFlowObj);temp = temp + 1;
设置目标条目使用临时变量的值。
setValue (fuelFlowObj、临时)
数据字典管理
使用金宝appSimulink.data.Dictionary
对象与整个数据字典。
目标 | 使用 |
---|---|
代表现有数据字典金宝appSimulink.data.Dictionary 对象 |
|
创建和表示数据字典金宝appSimulink.data.Dictionary 对象 |
|
与数据字典 | |
从MATLAB基础工作区导入变量数据字典 | |
添加引用字典数据字典 | |
删除引用字典从数据字典 | |
保存修改数据字典 | |
丢弃更改数据字典 | |
查看条目列表存储在数据字典中 | |
导入枚举类型定义数据字典 | |
返回的文件名和路径数据字典 |
|
在模型浏览器窗口显示数据字典 |
|
从模型资源管理器窗口隐藏数据字典 |
|
数据字典和之间的紧密联系金宝appSimulink.data.Dictionary 对象 |
|
识别开放数据字典 | |
关闭所有连接所有打开的数据字典 |
字典管理部分
数据字典存储数据条目中包含部分,默认情况下所有字典都至少三个部分命名设计数据,其他数据和配置。使用金宝appSimulink.data.dictionary.Section
部分对象与数据字典。
字典条目操作
一个变量,存储在一个数据字典被称为一个条目的字典。条目有附加属性存储状态信息,如时间和日期最后修改的条目。使用金宝appSimulink.data.dictionary.Entry
对象来操作数据字典条目。
过渡到使用数据字典
使用数据字典可以使编程与模型数据的交互。如果你链接模型字典:
你可以不再与模型数据交互通过使用简单的命令在命令提示符。相反,您必须使用字典的编程接口(
金宝appSimulink.data.Dictionary
)。当您选择字典财产使字典基工作区(见继续使用基本的工作区中共享数据),根据目标数据的存储位置,您必须使用简单的命令或编程接口。
帮助从使用基本工作空间过渡到使用数据字典,考虑使用这些函数。功能操作模型数据与数据的存储位置无关。
目标 | 使用 |
---|---|
改变数据字典条目或工作空间变量的值在仿真软件模型的上下文中金宝app | |
评估MATLAB仿真软件模型的表达式上下文中金宝app | |
确定存在的数据字典条目或工作空间变量仿真软件模型的上下文中金宝app |
以编程方式单一模型迁移到使用字典
改变从MATLAB仿真软件模型的数据源基础工作提升到一个新的数金宝app据字典,使用这个示例代码作为模板。
%定义模型名称和数据字典名称modelName =“f14”;dictionaryName =“myNewDictionary.sldd”;%加载目标模型load_system (modelName);%识别所有模型基本工作空间中定义的变量varsToImport = 金宝appSimulink.findVars (modelName,“SourceType”,“基础工作”);varNames = {varsToImport.Name};%创建数据字典dictionaryObj = 金宝appSimulink.data.dictionary.create (dictionaryName);%导入到字典中定义的模型变量的基础%的工作区,并清除从基本工作空间变量[importSuccess, importFailure] = importFromBaseWorkspace (dictionaryObj,…“varList”varNames,“clearWorkspaceVars”,真正的);字典%链接到模型中set_param (modelName“DataDictionary”,dictionaryName);
请注意
这段代码不迁移的定义枚举数据类型,用于定义模型变量。如果您导入模式枚举数据类型的变量数据字典但不迁移枚举类型定义,字典不便携,如果被别人可能无法正常工作。枚举数据类型定义迁移到一个数据字典,看到的枚举的数据字典。
直接从外部文件导入词典
这个例子展示了如何使用一个定制的MATLAB函数直接从外部文件导入数据到数据字典不创建或改变变量的基本工作空间。
在一个表中创建一个二维查找表的微软®Excel®工作簿。使用左上角的表来提供名称的两个断点和表。使用B和行2列来存储两个断点,并使用其余的表来存储表。例如,您的查找表可能会看起来像这样:
在当前文件夹保存工作簿
my2DLUT.xlsx
。这个自定义函数定义复制到一个MATLAB文件,并保存文件在当前文件夹
importLUTToDD.m
。函数importLUTToDD (workbookFile dictionaryName)% IMPORTLUTTODD (workbookFile dictionaryName)进口数据%二维查找表从一个工作簿直接进入一个数据%的字典。二维查找表的工作簿%任何大小,但必须遵循一种标准格式。%在整个工作簿的第一单。(数据、名称~)= xlsread (workbookFile 1”);%将原始输入数据划分为断点,桌子,和他们的%的名字。%假设断点1在第一列和断点2%第一行。%认为细胞A2、B1和B2定义断点名称和表名。bkpt1 =数据(2:结束,1);bkpt2 =数据(1、2:结束);表=数据(2:结束,2:结束);bkpt1Name =姓名{2,1};bkpt2Name ={1,2}名称;表名=姓名{2,};%准备导入设计目标数据的数据部分%的字典。myDictionaryObj = 金宝appSimulink.data.dictionary.open (dictionaryName);dDataSectObj = getSection (myDictionaryObj,设计数据的);%在字典中创建条目存储断点和进口%表。名称条目使用断点和表名进口%的工作簿。addEntry (dDataSectObj bkpt1Name bkpt1);addEntry (dDataSectObj bkpt2Name bkpt2);addEntry (dDataSectObj、表、表);%保存更改到字典并关闭它。saveChanges (myDictionaryObj)关闭(myDictionaryObj)
在MATLAB命令提示符下,创建一个数据字典存储查找表数据。
myDictionaryObj = 金宝appSimulink.data.dictionary.create (“myLUTDD.sldd”);
调用自定义函数来查找表导入到新数据字典。
importLUTToDD (“my2DLUT.xlsx”,“myLUTDD.sldd”)
在模型浏览器中打开数据字典。
显示(myDictionaryObj)
三个新条目存储进口断点和查找表。可以使用在这些条目二维查找表块。
以编程方式分区数据字典
分区数据字典为参考词典,使用这个示例代码作为模板。您可以使用参考字典使大型数据字典更易于管理,并包含了多个模型的标准化数据是有用的。
%定义一个父数据字典和两个的名字%参考数据字典parentDDName =“myParentDictionary.sldd”;typesDDName =“myTypesDictionary.sldd”;paramsDDName =“myParamsDictionary.sldd”;%创建父数据字典和一个% 金宝appSimulink.data。Dictionary对象来表示它parentDD = 金宝appSimulink.data.dictionary.create (parentDDName);%建立Simulink金宝app.data.dictionary。部分对象来表示%的设计数据部分家长字典designData_parentDD = getSection (parentDD,设计数据的);%进口一些数据到父partDD_Data_ex_API.m的字典文件importFromFile (designData_parentDD“partDD_Data_ex_API.m”);%创建两个参考字典金宝appSimulink.data.dictionary.create (typesDDName);金宝appSimulink.data.dictionary.create (paramsDDName);%创建一个引用字典层次通过添加参考字典%到父字典addDataSource (parentDD typesDDName);addDataSource (parentDD paramsDDName);%迁移模型。金宝app参数对象的父数据字典%参考字典paramEntries =找到(designData_parentDD,“价值”,“海尔集团”,“金宝appSimulink.Parameter”);为i = 1:长度(paramEntries) paramEntries(我)。数据源=“myParamsDictionary.sldd”;结束%迁移模型。金宝appNumericType对象的父数据字典%参考字典typeEntries =找到(designData_parentDD,“价值”,“海尔集团”,“金宝appSimulink.NumericType”);为i = 1:长度(typeEntries) typeEntries(我)。数据源=“myTypesDictionary.sldd”;结束%保存所有更改父数据字典saveChanges (parentDD)
更改配置设置存储在字典中
你可以存储配置设置(一个金宝appSimulink.ConfigSet
对象)的配置部分中一个字典。改变以编程方式设置配置参数的设置:
创建一个
金宝appSimulink.data.dictionary.Entry
对象代表配置设置(这是字典的条目)。例如,假设字典的名称myData.sldd
和的名称金宝appSimulink.ConfigSet
对象是myConfigs
。dictionaryObj = 金宝appSimulink.data.dictionary.open (“myData.sldd”);configsSectObj = getSection (dictionaryObj,“配置”);entryObj = getEntry (configsSectObj,“myConfigs”);
存储目标的一个副本
金宝appSimulink.ConfigSet
对象在一个临时变量。temp = getValue (entryObj);
临时变量,修改配置参数(在本例中,设置目标停止时间来
20.
)。set_param(临时“StopTime”,“20”);
使用临时变量覆盖配置中设置的字典。
setValue (entryObj、临时);
将更改保存到词典。
saveChanges (dictionaryObj)
另请参阅
金宝appSimulink.findVars
|set_param
|金宝appSimulink.data.dictionary.setupWorkerCache
|金宝appSimulink.data.dictionary.cleanupWorkerCache