文档

数据对象

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

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

决定是否使用数据对象配置信号,包括轮廓尺寸外埠块,看存储信号和状态的设计属性

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

数据类命名约定

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

package.class

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

  • 是类的名称。

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

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

使用数据对象金宝app模型

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

使用参数对象

可以使用参数对象,而不是数值对象®变量,以指定块参数的值。例如,创建和使用金宝app仿真软件。参数对象命名myParam指定获得a参数获得布洛克:

  1. 在模型中,在建模选项卡,在设计,点击属性检查器

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

  3. 设置获得参数到myParam

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

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

    金宝app仿真软件。参数对象myParam,将显示在基本工作区中。“属性”对话框显示对象存储参数值15.23在里面价值财产。

  6. 使用属性对话框通过调整对象属性来指定块参数的其他特征。例如,要指定参数可以接受的最小值和最大值,可以使用最低最大值属性。

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

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

使用信号对象

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

为信号。若要使用信号对象来控制模型中信号的特征,请使用与信号相同的名称在工作空间中创建该对象。

  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”“SignalName”'mysig'%设置块参数'MustResolveToSignalObject'。set_param(“myModel / myOutport”“MustResolveToSignalObject”“上”

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

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

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

  3. 在模型中,选择承载目标状态的块。模型数据编辑器突出显示对应于状态的行。

  4. 在模型数据编辑器中的名字列,为状态指定一个名称,例如myState

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

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

    金宝app模拟信号对象myState出现在目标工作区中。金宝appSimulink选择块参数状态名必须解析为Simulink信号对象金宝app,它强制模型中的状态使用信号对象存储的属性。要了解如何控制状态名称解析为信号对象的方式,请参见符号解析

    新对象的属性对话框打开。

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

以编程方式配置状态:

%创建信号对象。myState=Si金宝appmulink.Signal;myState.DataType='int16'%在块中设置状态名。set_param(“myModel / myBlock”“StateName”“我的国家”%设置端口参数“StateMustResolveToSignalObject”。set_param(“myModel / myBlock”“StateMustResolveToSignalObject”“上”

数据对象属性

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

您可以使用Model Explorer或MATLAB命令更改数据对象的属性。

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

使用模型资源管理器更改对象的属性

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

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

属性中可以配置Model Explorer以显示某个对象的部分或全部属性内容窗格(参见模型资源管理器:内容窗格).属性中的值可以编辑属性内容对话框窗玻璃该值由允许您更改该值的控件替换。

使用MATLAB更改对象属性的命令

您还可以使用MATLAB命令来获取和设置数据对象属性。在MATLAB命令和程序中使用以下点符号来获取和设置数据对象的属性:

价值对象属性对象属性价值

哪里obj是一个变量,如果它是一个值类的实例,它引用对象,或者如果对象是一个句柄类的实例,它引用对象(参见句柄vs值类),财产属性的名称,和价值为属性的值。例如,下面的MATLAB代码创建了一个数据类型别名对象(即金宝appSimulink.AliasType),并将其基类型设置为uint8

增益=Simu金宝applink.AliasType;增益.BaseType=‘uint8’

您可以递归使用点表示法来获取和设置对象的属性,这些属性是其他对象属性的值,例如。,

gain.CoderInfo.StorageClass ='ExportedGlobal'

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

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

创建数据对象

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

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

    参数或信号对象将显示在基本工作空间中。新参数对象的默认名称为参数.新信号对象的默认名称是团体

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

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

以编程方式创建数据对象

创建一个Simulin金宝appk。参数对象命名myParamwhose value is 15.23.myparam = 金宝appsimulink.parameter(15.23);创建一个Simulin金宝appk。信号对象命名mySig。mySig = 金宝appSimulink.Signal;

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

可以将数值变量转换为金宝app仿真软件。参数对象,如下所示。

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

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

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

从另一个包创建数据对象

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

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

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

  3. 在对话框中,选择您想要的类旁边的复选框。例如,选中旁边的复选框myPackage。参数myPackage。信号.点击好啊

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

    参数或信号对象将显示在基本工作空间中。新参数对象的默认名称为参数.新信号对象的默认名称是团体

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

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

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

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

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

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

“从块创建参数对象”对话框

  1. 在对话框中的数字块参数中,指定要用于数据对象的名称。例如,指定名称myParam

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

  3. 创建新的数据对话框中,指定价值作为金宝app仿真软件。参数

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

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

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

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

    的参数对象myParam出现在基本工作区中。

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

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

  1. 信号的名字框中,指定信号名称,例如mySig.点击应用

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

  3. 创建新的数据对话框中,指定价值作为金宝app模拟信号

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

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

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

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

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

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

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

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

  • 信号、参数或状态名。

  • 参数对象的数值。

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

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

  2. 模型名称框,输入要搜索的模型的名称。

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

  3. 在下面找到选项,选中要创建的数据对象类型旁边的复选框。该表描述了这些选项。

    选项 描述
    根输入 来自根级别的命名信号轮廓尺寸块。
    根输出 来自根级别的命名信号外埠块。

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

    离散滤波器
    离散状态空间
    离散时间积分器
    离散传递Fcn
    离散Zero-Pole
    内存
    离散PID控制器
    离散时间PID控制器(二自由度)
    单位延迟
    数据存储 数据存储。有关数据存储的详细信息,请参见本地和全局数据存储
    块输出 源是非根级块的命名信号。
    参数
    • 数值参数,例如这些块中的参数:

      常数
      获得
      继电器
    • 状态流®数据与范围设置为参数

    别名类型 数据类型您指定的替换名称配置参数>代码生成>数据类型替换.如果您有嵌入式编码器许可,数据对象向导将创建金宝appSimulink.AliasType用于这些数据类型替换名称的对象。有关数据类型替换的详细信息,请参见模型配置参数:代码生成数据类型替换(嵌入式编码器)
  4. 点击发现

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

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

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

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

    • 在模型浏览器上模型层次结构窗格中,选择一个工作区。例如,选择基本工作空间

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

    • 从下拉列表中,选择您希望向导使用的类。例如,选择myPackage参数myPackage信号

      一个参数或信号对象将出现在选定的工作区中。新参数对象的默认名称是参数.新信号对象的默认名称是团体

      下次使用数据对象向导时,向导会使用您在模型资源管理器中选择的参数或信号类提出对象。

  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。价值=3;%的信号SigGlb = 金宝appSimulink.Signal;SigGlb。数据类型='int8'

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

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

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

  • xmlread

  • xmlwrite

  • xlsread

  • xlswrite

  • CSVread.

  • csvwrite

  • dlmread.

  • dlmwrite.

数据对象的方法

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

动态方法

动态方法的标识依赖于它的名称和作为其第一个参数隐式或显式指定的对象的类。您可以使用函数表示法或点表示法来指定该对象,该对象必须是定义方法的类的实例,或定义方法的类的子类的实例。例如,假设类一个定义一个名为setName的实例的名称一个.进一步,假设MATLAB工作空间包含一个赋给变量的A实例obj.然后,您可以使用下列语句中的任何一个来分配名称“foo”obj

obj.setName (“foo”);setName (obj,“foo”);

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

请注意

大多数Si金宝appmulink数据对象方法都是动态方法。除非方法的文档另有规定,否则可以假定方法是动态方法。

静态方法

静态方法的标识仅依赖于其名称,因此不能在运行时更改。要调用静态方法,请使用它的完全限定名,该名称包括定义它的类的名称,后跟方法本身的名称。例如,金宝appSimulink.ModelAdvisor类定义一个名为GetModelAdvisor..这个静态方法的全限定名是金宝appSimulink.ModelAdvisor.getModelAdvisor.下面的示例演示了静态方法的调用。

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

构造函数

每个数据类都定义了一种创建该类实例的方法。该方法的名称与类的名称相同。例如,姓名金宝app仿真软件。参数类的构造函数金宝app仿真软件。参数.由Simulink数据类定义的构造函数没有参数。金宝app

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

句柄vs值类

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

对值类

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

例如,金宝appSimulink.NumericType是一个值类。执行以下陈述

x = 金宝appSimulink.NumericType;y = x;

创造了两个类实例金宝appSimulink.NumericType在工作区中,分配给变量的一个x另一个是y

关于处理类

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

x = 金宝appSimulink.Parameter;y = x;

的实例金宝app仿真软件。参数类。变量x和y都通过实例的句柄来引用实例。

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

x.Description =“输入增益”;y.Description
输入增益

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

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

复制句柄类

使用句柄类的复制方法来创建该类实例的副本。例如,金宝appsimulink.configset.是表示模型配置集的句柄类。以下代码创建当前模型的活动配置集的副本,并将其作为面向模型开发的备用配置附加到模型。

activeConfig = getActiveConfigSet (gcs);develConfig = (activeConfig)复印件;develConfig。Name =“develConfig”;attachConfigSet (gcs、develConfig);

比较数据对象

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

a = 金宝appsimulink.signal;b = 金宝appsimulink.signal;A.Datatype =.'int8'; B.数据类型='int8'; A.初始值=“1.5”; B.初始值=“1.5”

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

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

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

如果在信号属性对话框中定义了一个信号,并且通过使用命令行或在Model Explorer中定义了同名的信号对象,那么当Simulink引擎试图解析表示信号名称的符号时,可能存在歧义。金宝app解决歧义的一种方法是指定一个信号解析到Simulink数据对象。金宝app选择信号名称必须解析为Simulink信号对象金宝app“信号属性”对话框中的。您不能指定存储类财产代码生成选项卡中的“信号属性”。

如上面的图所示存储类菜单被禁用,因为它取决于Sinsig金宝app模拟信号对象指定其自己的存储类。

信号和信号对象Sinsig都有模型的默认存储类。因此,Sinsig解决了信号对象Sinsig

请注意

块状态/信号对象之间的兼容性规则与给出的信号/信号对象的规则相同。

创建持久数据对象

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

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

  • 使用保存命令将数据对象保存在Mat文件中和负载命令将它们恢复到同一会话或稍后会话中的MATLAB基础工作区。配置模型,在模型加载时从mat文件或脚本文件加载对象。

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

设置参数(地面军事系统,“PreLoadFcn”“负载data_objects”);

加载data_objects.作为模型的预加载功能。无论何时打开模型,数据对象都会显示在基本工作空间中。

保存对象的类的定义必须在MATLAB路径上存在,才能恢复它们。如果保存的对象的类在保存对象之后获得了新属性,那么Simulink会将新属性添加到对象的恢复版本中。金宝app如果在保存对象之后类失去了属性,则只恢复剩下的属性。

另请参阅

||||

相关话题