主要内容

数据对象

你可以创建数据对象指定值、值范围、数据类型、可调性以及信号、状态和块参数的其他特征。在Simulink中使用对象名称金宝app®对话框来指定信号、状态和参数特征。这些对象存在于工作空间中,例如基本工作空间、模型工作空间或Simulink数据字典。金宝app数据对象允许您通过仅更改工作空间对象的值来对信号、状态和参数特征进行模型范围的更改。

您将数据对象创建为数据类的实例。内存结构调用数据类包包含数据类定义。内置包装金宝app定义两个数据类,金宝app仿真软件。信号金宝appSimulink.Parameter.,可用于创建数据对象。存储查找表数据以便在查找表块之间共享(例如一天的查找表),你可以使用金宝app仿真软件。LookupTable金宝app模拟断点课程。

决定是否使用数据对象配置信号,包括inport.外港块,看信号和状态的商店设计属性

您可以通过定义内置数据类的子类来定制数据对象属性和方法。有关创建数据类包的详细信息,请参见定义数据类

数据类命名约定

金宝appSimulink使用Dot表示法命名数据类:

package.class

  • 包裹是包含类定义的包的名称。

  • 班级是类的名称。

这种表示法允许您创建和引用命名相同的属于不同包的类。在这种表示法中,是包的名称资格类的名称。

类和包名是区分大小写的。例如,您不能使用MYPACKAGE.MYCLASSmypackage.myclass.可以互换地引用同一个类。

使用数据对象金宝app模型

若要通过修改工作空间或数据字典中的变量来指定信号、块参数和状态的模拟和代码生成选项,请使用数据对象。在模型图中将对象与信号、参数和状态关联起来。

使用参数对象

你可以使用参数对象,而不是数字MATLAB®变量,以指定块参数的值。例如,要创建和使用金宝appSimulink.Parameter.对象命名my指定获得参数的获得区块:

  1. 在模型中,在建模选项卡,在下面设计,点击物业检查员

  2. 在模型中,单击目标获得块属性检查器显示块的属性和参数。

  3. 设置的值获得参数my

  4. 在参数值旁边,单击“操作”按钮选择创建

  5. 在里面创建新数据对话框,设置价值金宝appSimulink.Parameter (15.23)并点击创建

    这个金宝appSimulink.Parameter.目的,my,显示在基本工作区中。属性对话框显示对象存储参数值15.23在里面价值财产。

  6. 使用“特性”对话框可以通过调整对象特性来指定块参数的其他特性。例如,要指定参数可以采用的最小值和最大值,请使用最低限度最大值特性。

在模拟过程中,获得参数现在使用该值15.23

通过使用共享查找表数据金宝app仿真软件。LookupTable金宝app模拟断点对象,参见包共享断点和查找表的表数据

使用信号对象

您可以关联信号线或块状态,例如a的状态单位延迟块,带有一个信号对象。

对于信号。要使用信号对象来控制模型中信号的特性,请使用与信号相同的名称在工作区中创建对象。

  1. 在模型中,在建模选项卡,单击模型数据编辑器

  2. 在模型数据编辑器中,选择信号选项卡。

  3. 在模型中,选择目标信号。模型数据编辑器突出显示与信号对应的行。

  4. 在模型数据编辑器中的名字列,给信号一个名称,例如mysig

  5. 单击该按钮在信号名称旁边。挑选创建和解决

  6. 在“创建新数据”对话框中,设置价值金宝app仿真软件。信号.使用位置下拉列表选择要存储对象的工作区(默认值是基本工作空间).点击创建

    这个金宝app仿真软件。信号对象mysig出现在目标工作区中。金宝appSimulink选择信号属性信号名称必须解析为Simulink信号对象金宝app,它强制模型中的信号使用信号对象存储的属性。要了解如何控制信号名称解析为信号对象的方式,请参见符号分辨率

    将打开新对象的“属性”对话框。

  7. 使用“属性”对话框指定信号特征。点击好的

以编程方式配置信号:

%创建信号对象。mySig = 金宝appSimulink.Signal;mySig。数据类型='布尔值'%获取创建块端口的句柄%的目标信号。porthandles = get_param('mymodel / myblock','porthandles');outportHandle = portHandles.Outport;%指定编程端口参数“Name”。set_param(OutportHandle,“姓名”,'mysig')%设置端口参数“MustResolveToSignalObject”。set_param(OutportHandle,“MustResolveToSignalObject”,'在')

配置根级别外港以编程方式阻止,必须使用稍微不同的技术:

%创建信号对象。mySig = 金宝appSimulink.Signal;mySig。数据类型='布尔值'%指定程序化块参数'signalName'。set_param(“myModel/myOutport”,“信号名”,'mysig')%设置块参数'MustresolVetosignAlobject'。set_param(“myModel/myOutport”,“MustResolveToSignalObject”,'在')

州。可以使用信号对象来控制块状态的特征,例如离散时间积分器

  1. 在模型中,在建模选项卡,单击模型数据编辑器

  2. 在模型数据编辑器中,选择选项卡。

  3. 在模型中,选择包含目标状态的块。模型数据编辑器高亮显示与状态对应的行。

  4. 在模型数据编辑器中的名字列,给出典礼一个诸如myState

  5. 单击该按钮在州名称旁边。选择创建和解决

  6. 在“创建新数据”对话框中,设置价值金宝app仿真软件。信号.使用位置下拉列表选择要存储对象的工作区(默认值是基本工作空间).点击创建

    这个金宝app仿真软件。信号对象myState出现在目标工作区中。金宝appsimulink选择块参数状态名称必须解析为Simulink信号对象金宝app,它强制模型中的状态使用信号对象存储的属性。要了解如何控制状态名称解析为信号对象的方式,请参阅符号分辨率

    将打开新对象的“属性”对话框。

  7. 使用“属性”对话框指定状态特征。点击好的

以编程方式配置状态:

%创建信号对象。myState = 金宝appSimulink.Signal;myState。数据类型='int16'%在块中设置状态名称。set_param('mymodel / myblock',“StateName”,“myState”)%设置端口参数'StatemustresolvetosignalObject'。set_param('mymodel / myblock',“状态必须解析为信号对象”,'在')

数据对象属性

要使用数据对象控制参数和信号特征,请指定数据对象属性的值。例如,参数和信号数据对象具有数据类型确定目标块参数或信号的数据类型的属性。数据类定义确定数据对象属性的名称,值类型,默认值和有效值范围。

可以使用模型管理器或MATLAB命令更改数据对象的属性。

有关信号对象属性列表,请参阅金宝app仿真软件。信号. 有关参数对象属性的列表,请参见金宝appSimulink.Parameter.

使用Model Explorer更改对象的属性

要使用Model Explorer更改对象的属性,请选择包含Model Explorer中的对象的工作区模型层次结构窗格。然后在模型资源管理器中选择对象内容窗格。

模型资源管理器在其中显示对象的属性对话框对话窗格(如果窗格是可见的)。

属性中可以配置Model Explorer以显示某个对象的部分或全部属性内容窗格(参见模型探险家)。要编辑属性,请单击其值内容对话窗格。该值将被允许更改该值的控件替换。

MATLAB命令要更改对象的属性

也可以使用MATLAB命令获取和设置数据对象属性。在MATLAB命令和程序中使用以下点表示法获取和设置数据对象的属性:

价值=obj.propertyobj.property=价值

在哪里obj.是一个变量,如果对象是值类的实例,则引用该对象;如果对象是句柄类的实例,则引用该对象的句柄(请参见处理与值类),财产是属性的名称,以及价值是属性的价值。例如,以下MATLAB代码创建数据类型别名对象(即,一个实例金宝app仿真软件。AliasType)并将其基类型设置为uint8:

获得= Sim金宝appulink.AliasType;收益。基类型=“uint8”

你可以使用点符号递归地获取和设置对象的属性,这些属性是其他对象的属性值,例如:

gain.CoderInfo.StorageClass ='ExportedGlobal'

从内置数据类包创建数据对象金宝app

内置包装金宝app定义两个数据对象类金宝appSimulink.Parameter.金宝app仿真软件。信号.您可以使用用户界面或以编程方式创建这些数据对象。

创建数据对象

  1. 在模型浏览器中模型层次结构窗格中,选择一个工作区以包含数据对象。例如,单击基本工作空间

  2. 在工具栏上,单击旁边的箭头添加参数添加信号.在下拉列表中选择金宝appSimulink参数金宝appSimulink信号

    一个参数或信号对象出现在基本工作区中。新参数对象的默认名称是帕纳.新信号对象的默认名称是s

  3. 要创建更多对象,请单击添加参数添加信号

创造金宝app仿真软件。LookupTable金宝app模拟断点对象,在“模型管理器”工具栏上,使用按钮。

以编程方式创建数据对象

%创建一个名为mypa金宝appram的simulink.parameter对象,其值为15.23。myparam = 金宝appsimulink.parameter(15.23);创建一个Simulin金宝appk。信号对象命名mySig。mySig = 金宝appSimulink.Signal;

将数字变量转换为参数对象

你可以把数值变量转换成金宝appSimulink.Parameter.反对意见如下。

/ *定义数字多变的基地工作空间myvar = 5;/ *创建数据对象分配多变的价值myobject = 金宝appsimulink.parameter(Myvar);

从另一个数据类包创建数据对象

您可以创建自己的包来定义自定义的数据对象类金宝appSimulink.Parameter.金宝app仿真软件。信号.您可以使用此技术将自己的属性和方法添加到数据对象。如果您有嵌入式编码器®许可证,您可以在包中定义存储类和内存部分。有关创建数据类包的详细信息,请参见定义数据类

从另一个包创建数据对象

假设您定义了一个名为mypackage..在从包中创建数据对象之前,必须包含包含MATLAB路径上的包文件夹的文件夹。

  1. 在模型浏览器中模型层次结构窗格中,选择一个工作区以包含数据对象。例如,单击基本工作空间

  2. 单击旁边的箭头添加参数添加信号选择自定义类列表

  3. 在对话框中,选中所需类旁边的复选框。例如,选中旁边的复选框mypackage.Parameter.我的包裹。信号.点击好的

  4. 单击旁边的箭头添加参数添加信号.选择要创建的数据对象的类。例如,选择mypackage参数mypackage信号

    一个参数或信号对象出现在基本工作区中。新参数对象的默认名称是帕纳.新信号对象的默认名称是s

  5. 从包中创建更多数据对象mypackage.,点击添加参数添加信号再次。

以编程方式从另一个包创建数据对象

假设您定义了一个名为mypackage..在从包中创建数据对象之前,必须包含包含MATLAB路径上的包文件夹的文件夹。

%创建一个mypackage.parameter对象命名% myParam,其值为15.23。myParam = myPackage.Parameter (15.23);%创建一个MyPackage.Signal对象名为MySIG。mysig = mypackage.signal;

直接从对话框创建数据对象

打开信号属性对话框时,块对话框或属性检查器(在建模选项卡,在下面设计,点击物业检查员),您可以有效地在工作区或数据字典中创建信号或参数数据对象。

从块对话框中创建参数对象

  1. 在对话框中的“数字块”参数中,指定数据对象所需的名称。例如,指定名称my

  2. 单击该按钮在块参数的值旁边。挑选创建

  3. 在里面创建新数据对话框,指定价值作为金宝appSimulink.Parameter.

    或者,您可以指定您创建的数据类的名称,例如mypackage.Parameter..您还可以使用下拉列表从可用数据对象类列表中进行选择。

  4. 指定位置作为基本工作空间并点击创建

    你可以使用位置选择要包含新数据对象的工作区的选项。如果模型与数据字典链接,则可以选择在字典中创建数据对象。

  5. 在打开的对话框中,配置数据对象属性。属性中的参数指定数值价值盒子。点击好的

    的参数对象my出现在基础工作区中。

  6. 在“块参数”对话框中,单击好的

从“信号属性”对话框中创建信号对象

  1. 在里面信号名称框中,指定信号名称,例如mysig.点击申请

  2. 单击该按钮旁边的价值信号名称.选择创建和解决

  3. 在里面创建新数据对话框,指定价值作为金宝app仿真软件。信号

    或者,您可以指定您创建的数据类的名称,例如我的包裹。信号.此外,从下拉列表中,您可以选择一个存在于MATLAB路径中的数据对象类。

  4. 指定位置作为基本工作空间并点击创建

    你可以使用位置选择要包含新数据对象的工作区的选项。如果模型与数据字典链接,则可以选择在字典中创建数据对象。

  5. 在打开的对话框中,配置数据对象属性并单击好的

    信号对象mysig显示在基本工作区中。在“信号属性”对话框中信号名称必须解析为Simulink信号对象金宝app财产被选中。

使用数据对象向导为模型创建数据对象

要创建代表模型中表示信号,参数和状态的数据对象,您可以使用Data对象向导。该向导在没有相应数据对象的模型中查找数据。

根据模型中的规范,向导创建对象并分配这些特征:

  • 信号、参数或状态名。

  • 参数对象的数值。

  • 数据类型。对于信号对象,包括别名类型,例如sumlink.aliaStype金宝app仿真软件。NumericType

  1. 在Simuli金宝appnk编辑器中建模选项卡,在下面设计,点击数据对象向导

  2. 在里面型号名称框,输入要搜索的模型的名称。

    默认情况下,该框包含您从中打开向导的模型的名称。

  3. 找到选项,选择要创建的数据对象类型旁边的复选框。表格描述了选项。

    选项 描述
    根投入 来自根级的命名信号inport.块。
    根输出 来自根级的命名信号外港块。

    与这些离散块相关的状态:

    离散滤波器
    离散状态空间
    离散时间积分器
    离散转移FCN.
    离散Zero-Pole
    记忆
    离散时间PID控制器
    离散时间PID控制器(2DOF)
    单位延迟
    数据存储 数据存储。有关数据存储的详细信息,请参见本地和全球数据存储
    块输出 源是非根级块的命名信号。
    参数
    别名类型 数据类型您指定的替换名称配置参数>代码生成>数据类型替换.如果您有嵌入式编码器许可证,则数据对象向导会创建金宝app仿真软件。AliasType这些数据类型替换名称的。有关数据类型替换的详细信息,请参见模型配置参数:代码生成数据类型替换(嵌入式编码)
  4. 点击找到

    “数据对象”表显示建议的对象。

  5. (可选)要从默认类以外的数据类创建对象,请选中要更改其类的对象旁边的复选框。要选择所有对象,请单击全选.点击改变类. 在打开的对话框中,使用旁边的下拉列表选择类参数信号

    如果您想要的类未出现在下拉列表中,请选择自定义类列表.在打开的对话框中,选中所需类旁边的复选框,然后单击好的

    要更改向导用于建议对象的默认参数和信号类:

    • 在模型探险家模型层次结构窗格中,选择一个工作区。例如,选择基本工作空间

    • 在工具栏上,单击旁边的箭头添加参数添加信号

    • 从下拉列表中,选择要使用向导的类。例如,选择mypackage参数mypackage信号

      参数或信号对象显示在所选工作区中。新参数对象的默认名称是帕纳.新信号对象的默认名称是s

      下次使用Data对象向导时,向导使用在Model Explorer中选择的参数或信号类提出对象。

  6. 选择要创建的建议对象旁边的复选框。要选择所有建议的对象,请单击全选

  7. 点击创建

    数据对象出现在基本工作区中。如果目标模型链接到数据字典,对象就会出现在字典中。

    向导会根据配置参数更改模型中的设置配置参数>诊断>数据的有效性>信号解析

    • 如果将参数设置为只有明确的,向导强制模型中的相应信号和状态以解析为新的信号对象。向导选择该选项信号名称必须解析为Simulink信号对象金宝app在每个“信号属性”对话框中状态名称必须解析为Simulink信号对象金宝app在每个块对话框中。

    • 如果将参数设置为显式和隐式显式和隐式,向导不会更改设置信号名称必须解析为Simulink信号对象金宝app状态名称必须解析为Simulink信号对象金宝app对于任何信号或状态。

    考虑使用该函数关闭模型的隐式信号对象解析DisableImplicitsignalResolution..有关更多信息,请参见显式和隐式符号解析

数据对象向导

  • 数据对象向导编译用于代码生成的模型,以建议创建信号对象。因此,该向导不能用于对代码生成无效的模型。

  • “数据对象向导”不建议在模型中为以下实体创建数据对象:

    • 具有相同名称的多个独立信号。

    • 与块参数中使用的变量同名的信号。

    • 缺少单个连续源块的信号。

    • 通过源块注释出或通过评论的信号。

    • 由呈现为非活动的数据项变异来源变体汇块。向导仅为与活动块关联的数据项提出对象。

    • 当您设置模型配置参数时,信号和状态信号解析没有任何

以编程方式从外部数据源创建数据对象

此示例演示如何基于外部数据源(例如微软®Excel®文件),使用脚本。

  1. 创建一个新的MATLAB脚本文件。

  2. 将描述要转换为数据对象的外部文件中的数据的信息放入文件中。例如,以下信息创建了两个金宝app具有指定属性的数据对象。第一个用于参数,第二个用于信号:

    % 参数parcon = 金宝appsimulink.parameter;parcon.coderinfo.storageClass =.'风俗'parcon.coderinfo.customstorageclass ='const';parcon.value = 3;%信号sigglb = 金宝appsimulink.signal;sigglb.datatype =.'int8'

  3. 运行脚本文件。数据对象出现在MATLAB工作区中。

如果要从外部源导入目标数据,则可以编写读取信息的MATLAB函数和脚本,将信息转换为数据对象,并将对象加载到基础工作区中。

可以使用这些函数与MATLAB外部的文件交互:

  • xmlread

  • xmlwrite

  • xlsread.

  • xlswrite

  • CSVread.

  • csvwrite

  • dlmread.

  • dlmwrite.

数据对象的方法

数据类定义了被称为方法的函数,用于创建和操作它们所定义的对象。类可以定义下列任何一种方法。

动态方法

动态方法是一种方法,其标识取决于其名称以及隐式或明确指定的对象的类作为其第一个参数。您可以使用函数或点表示法指定此对象,该对象必须是定义定义该方法的类的方法或子类的方法的类的实例。例如,假设类A.定义一个调用的方法集合名的实例的名称A..此外,假设MATLAB工作区包含分配给变量的实例obj..然后,您可以使用以下任一语句来分配名称“foo”obj.:

obj.setname(“foo”);设置名称(obj,“foo”);

一个类可以定义一组方法,这些方法与它的一个超类定义的方法同名。在这种情况下,由子类定义的方法覆盖由父类定义的方法的行为。金宝appSimulink确定在运行时从指定为第一个或隐式参数的对象的类调用哪个方法。因此才有了动态方法这个术语。

大多数Si金宝appmulink数据对象方法是动态方法。除非方法的文档否则,否则您可以假设方法是动态方法。

静态方法

静态方法是一种方法,其标识仅取决于其名称,因此无法在运行时更改。要调用静态方法,请使用其完全限定的名称,其中包含类的名称,该名称定义其后跟方法本身的名称。例如,金宝app仿真软件。ModelAdvisor类定义了一个名为的静态方法GetModelAdvisor..这种静态方法的完全限定名称是金宝appsimulink.modeladvisor.getModelAdvisor..以下示例说明了静态方法的调用。

马= Si金宝appmulink.ModelAdvisor.getModelAdvisor ('vdp');

构造师

每个数据类都定义了一种创建该类实例的方法。该方法的名称与类的名称相同。例如,姓名金宝appSimulink.Parameter.类的构造函数金宝appSimulink.Parameter..Simulink数据类定义的构造函数不占用参数。金宝app

构造函数返回的值取决于它的类是句柄类还是值类。句柄类的构造函数返回它创建的实例的句柄,如果实例的类是句柄类;否则,它将返回实例本身(参见处理与值类)。

处理与值类

金宝appSimulink类,包括数据对象类,分为两类:value类和句柄类。

对值类

函数的构造函数价值班级(参见构造师)返回类的实例,实例永久关联与最初分配的MATLAB变量。将变量重新分配或传递给函数导致MATLAB创建和分配或传递原始对象的副本。

例如,金宝app仿真软件。NumericType是一个值类。执行以下陈述

x=Si金宝appmulink.NumericType;y=x;

创造了两个类实例金宝app仿真软件。NumericType在工作区中,分配给变量x而另一个Y

关于处理课程

函数的构造函数处理类返回句柄对象。可以将句柄分配给多个变量或传递给函数而不导致要创建的原始对象的副本。例如,金宝appSimulink.Parameter.类是句柄类。执行

x = 金宝appsimulink.parameter;y = x;

仅创建的一个实例金宝appSimulink.Parameter.类在MATLAB工作区中创建。变量x和y都通过其句柄引用实例。

程序可以通过修改引用句柄类的任何变量来修改句柄类的实例,例如,继续前面的示例,

x、 描述=“输入增益”;Y.Description.
ANS =输入增益

大多数Si金宝appmulink数据对象类是value类。例外包括金宝app仿真软件。信号金宝appSimulink.Parameter.类。

要确定变量的值是对象(值类)还是对象的句柄,请参见确定对象是否是句柄

复制句柄对象

使用句柄对象的复制方法创建该对象的实例的副本。例如,ConfigSet是表示模型配置集的句柄对象。下面的代码创建当前模型的活动配置集的副本,并将其附加到模型中,作为用于模型开发的备用配置。

activeConfig = getActiveConfigSet (gcs);develConfig = (activeConfig)复印件;develConfig。Name =“develConfig”;attachconfigset(gcs,develconfig);

比较数据对象

金宝appSimulink数据对象提供了一个名为等质量,确定对象属性值是否相等。此方法将一个对象的属性值与属于另一个对象的人进行比较,并返回true(1.)如果所有值都相同或错误(0) 除此以外。例如,以下代码实例化了两个信号对象(A和B),并指定特定属性的值。

a = 金宝appsimulink.signal;b = 金宝appsimulink.signal;A.Datatype =.'int8';B.DataType ='int8';A.InitialValue ='1.5';B.InitialValue ='1.5'

之后,使用等质量方法来验证A和B的对象属性是否相等。

结果= isequal (A, B)
结果= 1

解决代码生成信号对象配置中的冲突

如果在信号属性对话框中定义了信号,并且通过使用命令行或模型资源管理器定义相同名称的信号对象,当Simulink引擎尝试解析表示信号名称的符号时,存在歧义的可能性金宝app.解决歧义的一种方法是指定信号解析为a金宝app仿真软件。信号数据对象。选择信号名称必须解析为Simulink信号对象金宝app选项在“信号属性”对话框中。

要配置信号数据,请使用代码映射编辑器或代码映射API将信号添加到模型代码映射,并设置存储类和存储类属性。对于金宝appSimulink Coder™看见配置C代码生成的信号数据(金宝app仿真软件编码器).对于嵌入式编码器,请参阅配置C代码生成的信号数据(嵌入式编码)

创建持久数据对象

要保留数据对象,以便在关闭MATLAB时持续,您可以:

  • 将对象存储在数据字典或模型工作区中。要决定永久存储模型数据的位置,请参见确定用于存储Simulink模型的变量和对象的位置金宝app

  • 使用节省命令将数据对象保存在Mat文件中和加载命令将它们恢复到MATLAB基础工作区的同一或更高的会话中。配置模型以在型号加载时从MAT文件或脚本文件加载对象。

若要在加载模型时从文件加载数据对象,请编写创建对象并配置其属性的脚本。或者,将对象保存在MAT文件中。然后使用脚本或load命令作为预处理用于使用对象的模型的回调例程。假设您将数据对象保存在命名的文件中data_objects.mat.,它们所应用的模型是开放和活跃的。在命令提示符处输入:

set_param (gcs,“PreLoadFcn”,'加载data_objects');

设置加载data_objects.为模型的预载函数。无论何时打开模型,数据对象都会出现在基本工作区中。

保存对象类的定义必须在MATLAB路径上存在,以便恢复它们。如果保存对象的类获取了保存对象后的新属性,则Simulink将新属性添加到对象的已恢复版本。金宝app如果保存对象后的类失去了属性,则只恢复保留的属性。

也可以看看

||||

相关的话题