文档

以编程方式将数据存储在字典中

数据字典存储Simulink金宝app®模型数据,提供了比MATLAB更多的数据管理功能®基本工作区或模型工作区(参见什么是数据字典?).以编程方式与字典中的数据交互:

  1. 创建一个金宝appSimulink.data.Dictionary对象,表示目标字典。

  2. 创建一个金宝appSimulink.data.dictionary.Section对象表示目标部分,例如Design Data部分。使用该对象与存储在节中的条目进行交互并添加条目。

  3. 可选地,创建金宝appSimulink.data.dictionary.Entry对象,每个对象表示目标部分中的一个条目。使用这些对象与目标部分中的单个条目交互。

要以编程方式访问变量以扫描块参数值,请考虑使用金宝app仿真软件。SimulationInput对象,而不是通过数据字典的编程接口修改变量。看到优化、估计和扫描块参数值

以编程方式与嵌入式编码器部分的数据字典,请参见以编程方式配置代码定义(嵌入式编码)。

在数据字典的设计数据部分添加条目

  1. 表示数据字典的“设计数据”部分myDictionary_ex_API.sldd与一个金宝appSimulink.data.dictionary.Section对象命名dDataSectObj

    myDictionaryObj =...金宝appSimulink.data.dictionary.open (“myDictionary_ex_API.sldd”);dDataSectObj = getSection (myDictionaryObj,设计数据的);
  2. 的“设计数据”部分添加一个条目myDictionary_ex_API.sldd一个条目myNewEntry与价值237

    addEntry (dDataSectObj“myNewEntry”, 237)

数据字典条目的增量值

  1. 表示数据字典条目fuelFlow与一个金宝appSimulink.data.dictionary.Entry对象命名fuelFlowObjfuelFlow在数据字典中定义myDictionary_ex_API.sldd

    myDictionaryObj = 金宝appSimulink.data.dictionary.open (“myDictionary_ex_API.sldd”);dDataSectObj = getSection (myDictionaryObj,设计数据的);fuelFlowObj = getEntry (dDataSectObj,“fuelFlow”);
  2. 将目标项的值存储在临时变量中。将临时变量的值加1。

    temp = getValue (fuelFlowObj);temp = temp + 1;
  3. 通过使用临时变量设置目标条目的值。

    setValue (fuelFlowObj、临时)

数据字典管理

使用金宝appSimulink.data.Dictionary对象与整个数据字典交互。

目标 使用
用表示现有数据字典金宝appSimulink.data.Dictionary对象

金宝appSimulink.data.dictionary.open

创建并表示数据字典金宝appSimulink.data.Dictionary对象

金宝appSimulink.data.dictionary.create

与数据字典交互

金宝appSimulink.data.Dictionary

从MATLAB基础工作空间导入变量到数据字典

金宝appSimulink.data.Dictionary.importFromBaseWorkspace方法

向数据字典中添加参考字典

金宝appSimulink.data.Dictionary.addDataSource方法

从数据字典中删除引用字典

金宝appSimulink.data.Dictionary.removeDataSource方法

将更改保存到数据字典

金宝appSimulink.data.Dictionary.saveChanges方法

丢弃对数据字典的更改

金宝appSimulink.data.Dictionary.discardChanges方法

查看存储在数据字典中的条目列表

金宝appSimulink.data.Dictionary.listEntry方法

将枚举类型定义导入数据字典

金宝appSimulink.data.Dictionary.importEnumTypes方法

返回文件名和数据字典的路径

金宝appSimulink.data.Dictionary.filepath方法

在模型资源管理器窗口中显示数据字典

金宝appSimulink.data.Dictionary.show方法

从模型资源管理器窗口中隐藏数据字典

金宝appSimulink.data.Dictionary.hide方法

与数据字典之间的紧密连接金宝appSimulink.data.Dictionary对象

金宝appSimulink.data.Dictionary.close方法

识别打开的数据字典

金宝appSimulink.data.dictionary.getOpenDictionaryPaths

关闭到所有打开数据字典的所有连接

金宝appSimulink.data.dictionary.closeAll

字典管理部分

数据字典将数据存储为包含在节中的条目,默认情况下,所有字典至少有三个节,分别为Design Data、Other Data和Configurations。使用金宝appSimulink.data.dictionary.Section对象与数据字典节交互。

目标 使用
用表示数据字典节部分对象。

金宝appSimulink.data.Dictionary.getSection方法

与数据字典部分交互

金宝appSimulink.data.dictionary.Section

从mat文件或MATLAB文件导入变量到数据字典部分

金宝appSimulink.data.dictionary.Section.importFromFile方法

导出数据字典部分的条目到mat文件或MATLAB文件

金宝appSimulink.data.dictionary.Section.exportToFile方法

从数据字典部分删除条目

金宝appSimulink.data.dictionary.Section.deleteEntry方法

在数据字典部分计算MATLAB表达式

金宝appSimulink.data.dictionary.Section.evalin方法

在数据字典部分搜索条目

金宝appSimulink.data.dictionary.Section.find方法

确定数据字典部分中是否存在条目

金宝appSimulink.data.dictionary.Section.exist方法

字典条目操作

存储在数据字典中的变量称为字典的条目。条目具有存储状态信息的附加属性,例如条目最后修改的时间和日期。使用金宝appSimulink.data.dictionary.Entry对象来操作数据字典项。

目标 使用
用表示数据字典项条目对象

金宝appSimulink.data.dictionary.Section.getEntry方法

将数据字典条目添加到节并用表示条目对象

金宝appSimulink.data.dictionary.Section.addEntry方法

操作数据字典条目

金宝appSimulink.data.dictionary.Entry

为数据字典项指定新值

金宝appSimulink.data.dictionary.Entry.setValue方法

显示对数据字典项所做的更改

金宝appSimulink.data.dictionary.Entry.showChanges方法

保存对数据字典所做的更改

金宝appSimulink.data.Dictionary.saveChanges方法

丢弃对数据字典项所做的更改

金宝appSimulink.data.dictionary.Entry.discardChanges方法

在数据字典条目数组中搜索

金宝appSimulink.data.dictionary.Entry.find方法

数据字典条目的返回值

金宝appSimulink.data.dictionary.Entry.getValue方法

删除数据字典条目

金宝appSimulink.data.dictionary.Entry.deleteEntry方法

将枚举类型定义存储在字典中

金宝appSimulink.data.dictionary.EnumTypeDefinition

过渡到使用数据字典

使用数据字典会使与模型数据的编程交互复杂化。如果你将一个模型链接到字典:

  • 您不能再通过在命令提示符处使用简单的命令与模型数据交互。相反,您必须使用字典的编程接口(金宝appSimulink.data.Dictionary).

  • 当您选择字典属性时启用对基本工作区的访问(见继续在基本工作区中使用共享数据),根据目标数据的存储位置,您必须使用简单命令或编程接口。

为了帮助从使用基本工作区过渡到使用数据字典,可以考虑使用以下函数。函数对模型数据进行操作,而不考虑数据的存储位置。

目标 使用
在Simulink模型上下文中更改数据字典条目或工作空间变量的值金宝app

金宝appSimulink.data.assigninGlobal

在Simulink模型的背景下计算MATLAB表达式金宝app

金宝appSimulink.data.evalinGlobal

确定在Simulink模型上下文中数据字典条目或工作空间变量的存在性金宝app

金宝appSimulink.data.existsInGlobal

以编程方式将单个模型迁移到使用字典

要将Simulink模型的数据源从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函数直接从外部文件导入数据到数据字典,而不需要在基本工作区中创建或更改变量。

  1. 在一个工作表中创建二维查找表®Excel®工作簿。使用工作表的左上角提供两个断点和表的名称。使用列B和行2存储两个断点,并使用表的其余部分存储表。例如,你的查找表可能是这样的:

    将工作簿保存在当前文件夹中为my2DLUT.xlsx

  2. 将这个自定义函数定义复制到一个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)
  3. 在MATLAB命令提示符下,创建一个数据字典来存储查找表数据。

    myDictionaryObj = 金宝appSimulink.data.dictionary.create (“myLUTDD.sldd”);
  4. 调用自定义函数将查找表导入到新的数据字典。

    importLUTToDD (“my2DLUT.xlsx”“myLUTDD.sldd”
  5. 在Model Explorer中打开数据字典。

    显示(myDictionaryObj)

    三个新条目存储导入的断点和查找表。这些条目可以在二维查找表块。

以编程方式划分数据字典

要将数据字典划分为参考字典,请使用此示例代码作为模板。您可以使用参考字典使大型数据字典更易于管理,并包含对多个模型有用的标准化数据。

定义一个父数据字典和两个%引用数据字典parentDDName =“myParentDictionary.sldd”;typesDDName =“myTypesDictionary.sldd”;paramsDDName =“myParamsDictionary.sldd”创建父数据字典和对象金宝app来表示它parentDD = 金宝appSimulink.data.dictionary.create (parentDDName);创建一个Simulin金宝appk.data.dictionary.Section对象来表示父字典的“设计数据”部分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);迁移所有的Simulink。金宝app参数对象的父数据字典参考词典paramEntries =找到(designData_parentDD,“价值”“海尔集团”的金宝app仿真软件。参数的);i = 1:length(paramEntries) paramEntries(i)。数据源=“myParamsDictionary.sldd”结束迁移所有的Simulink。金宝app父数据字典中的NumericType对象%到参考字典typeEntries =找到(designData_parentDD,“价值”“海尔集团”的金宝app仿真软件。NumericType”);i = 1:length(typeEntries) typeEntries(i)。数据源=“myTypesDictionary.sldd”结束将所有更改保存到父数据字典saveChanges (parentDD)

对存储在字典中的配置集进行更改

您可以存储一个配置集(a金宝app仿真软件。ConfigSetobject)在字典的配置部分。以编程方式更改集合中配置参数的设置:

  1. 创建一个金宝appSimulink.data.dictionary.Entry对象,该对象表示配置集(它是字典中的一个条目)。例如,假设字典的名称是myData.sldd还有这个名字金宝app仿真软件。ConfigSet对象是myConfigs

    dictionaryObj = 金宝appSimulink.data.dictionary.open (“myData.sldd”);configsSectObj = getSection (dictionaryObj,“配置”);entryObj = getEntry (configsSectObj,“myConfigs”);

  2. 存储目标的副本金宝app仿真软件。ConfigSet对象。

    temp = getValue (entryObj);

  3. 在临时变量中,修改目标配置参数(在本例中为set停止时间20.).

    set_param(临时“StopTime”“20”);

  4. 使用临时变量覆盖字典中的配置集。

    setValue (entryObj、临时);

  5. 保存对字典所做的更改。

    saveChanges (dictionaryObj)

另请参阅

|||

相关的话题