主要内容

数据对象

您可以创建数据对象指定值,值范围、数据类型的可调性,以及其他的特征信号,州,和块参数。你使用仿真软件中的对象名称金宝app®对话框指定信号、状态和参数特征。对象存在于工作区等基本工作空间,工作空间模型或仿真软件数据字典。金宝app数据对象允许您更改model-wide信号、状态和参数特征仅通过改变工作空间对象的值。

创建数据对象,数据类的实例。内存结构称为数据类包包含类定义的数据。内置的包金宝app定义了两个数据类,金宝appSimulink.Signal金宝appSimulink.Parameter,你可以使用它来创建数据对象。存储查找表之间的数据共享(如查找表块一天的查找表),您可以使用金宝appSimulink.LookupTable金宝appSimulink.Breakpoint类。

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

您可以自定义数据对象属性和方法通过定义内置的数据类的子类。创建一个数据类包的更多信息,见定义数据类

数据类的命名约定

金宝app仿真软件使用点符号名称数据类:

package.class

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

  • 类的名称。

这个符号允许您创建和引用名称相同的类,属于不同的包。在这个符号,包的名称有资格类的名称。

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

使用数据对象金宝app模型

为信号,指定模拟和代码生成选项块参数,在工作区和状态通过修改变量或数据字典,使用数据对象。将对象与信号、参数和状态模型图。

使用参数对象

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

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

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

  3. 设置的值获得参数myParam

  4. 下一个参数值,点击操作按钮并选择创建

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

    金宝appSimulink.Parameter对象,myParam,出现在工作区中。属性对话框显示对象存储参数值15.23价值财产。

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

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

通过使用共享查找表数据金宝appSimulink.LookupTable金宝appSimulink.Breakpoint对象,看到包共享断点和表数据查找表

使用信号对象

你可以将一个信号或阻塞状态,如的状态单位延迟块,一个信号对象。

为信号。使用一个信号对象来控制信号的特征模型,在一个工作区创建对象使用相同的名称作为信号。

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

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

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

  4. 在模型数据编辑器中,在的名字列,给信号名称等mySig

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

  6. 在创建新的数据对话框中,设置价值金宝appSimulink.Signal。使用位置下拉列表选择一个工作空间来存储对象(默认值是基本工作空间)。点击创建

    金宝appSimulink.Signal对象mySig出现在目标工作区。金宝app模型选择信号属性信号仿真软件名称必须决心信号对象金宝app,这迫使信号模型中使用信号对象存储的属性。学习如何控制信号名称解析为信号对象的方式,明白了符号解析

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

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

以编程方式配置信号:

%创建信号对象。mySig = 金宝appSimulink.Signal;mySig。数据类型=“布尔”;%处理阻塞端口创建%的目标信号。portHandles = get_param (“myModel / myBlock”,“portHandles”);outportHandle = portHandles.Outport;%指定编程端口参数的名称。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. 在创建新的数据对话框中,设置价值金宝appSimulink.Signal。使用位置下拉列表选择一个工作空间来存储对象(默认值是基本工作空间)。点击创建

    金宝appSimulink.Signal对象myState出现在目标工作区。金宝app模型选择块的参数国家名称必须解决信号模型对象金宝app,这迫使政府在模型中使用信号对象存储的属性。学习如何控制国家名称的方式解决信号对象,明白了符号解析

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

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

配置状态编程:

%创建信号对象。myState = 金宝appSimulink.Signal;myState。数据类型=“int16”;%设置状态的名字。set_param (“myModel / myBlock”,“StateName”,“myState”)%的端口参数设置“StateMustResolveToSignalObject”。set_param (“myModel / myBlock”,“StateMustResolveToSignalObject”,“上”)

数据对象属性

使用数据对象来控制参数和信号特点,指定数据对象属性的值。例如,有一个参数和信号数据对象数据类型属性决定了目标块参数的数据类型或信号。数据类定义确定名称、值类型、默认值、有效值范围的数据对象属性。

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

信号对象属性的列表,请参阅金宝appSimulink.Signal。参数对象属性的列表,请参阅金宝appSimulink.Parameter

使用Model Explorer来改变对象的属性

使用Model Explorer来改变一个对象的属性,选择工作区包含对象在Model Explorer模型层次结构窗格。然后在模型浏览器的选择对象内容窗格。

Model Explorer显示对象的属性对话框对话框面板(如果窗格中是可见的)。

您可以配置模型浏览器中显示的部分或全部属性的对象内容面板(见模型浏览器)。编辑属性,单击其价值内容对话框窗格。值被控制,允许你改变的价值。

使用MATLAB命令来改变对象的属性

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

价值=obj.property;obj.property=价值;

在哪里obj是一个变量引用的对象如果是一个值的一个实例类或对象,如果对象的句柄,句柄类的实例(看到了吗处理与值类),财产属性的名字,价值是属性的值。例如,下面的MATLAB代码创建了一个对象(即数据类型的别名。的一个实例,金宝appSimulink.AliasType),并设置其基本类型uint8:

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

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

gain.CoderInfo。StorageClass =“ExportedGlobal”;

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

内置的包金宝app定义了两个数据对象类金宝appSimulink.Parameter金宝appSimulink.Signal。您可以使用用户界面创建这些数据对象或编程方式。

创建数据对象

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

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

    一个参数或信号对象出现在基地工作空间。新的参数对象的缺省名称参数。新的信号对象的缺省名称团体

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

创建金宝appSimulink.LookupTable金宝appSimulink.Breakpoint对象、模型浏览器工具栏上的使用按钮。

以编程方式创建数据对象

%创建一个模型。金宝app参数对象命名myParamwhose value is 15.23.myParam = 金宝appSimulink.Parameter (15.23);%创建一个模型。金宝app信号对象命名mySig。mySig = 金宝appSimulink.Signal;

数值变量转换成参数对象

您可以转换成一个数值变量金宝appSimulink.Parameter对象,如下所示。

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

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

您可以创建自己的包来定义自定义数据对象类,子类金宝appSimulink.Parameter金宝appSimulink.Signal。您可以使用这种技术来添加自己的数据对象的属性和方法。如果你有一个嵌入式编码器®许可,您可以定义存储在包类和记忆的部分。创建一个数据类包的更多信息,见定义数据类

创建数据对象从另一个包

假设您定义一个数据类包myPackage。创建数据对象从包之前,您必须包括包含包文件夹的文件夹在MATLAB的道路。

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

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

  3. 在对话框中,选择旁边的复选框类,你想要的。例如,选择旁边的复选框myPackage.ParametermyPackage.Signal。点击好吧

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

    一个参数或信号对象出现在基地工作空间。新的参数对象的缺省名称参数。新的信号对象的缺省名称团体

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

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

假设您定义一个数据类包myPackage。创建数据对象从包之前,您必须包括包含包文件夹的文件夹在MATLAB的道路。

%建立myPackage。参数对象命名% myParam其值是15.23。myParam = myPackage.Parameter (15.23);%建立myPackage。信号对象命名mySig。mySig = myPackage.Signal;

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

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

从块对话框创建参数对象

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

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

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

    此外,您可以指定的名称创建一个数据类,如myPackage.Parameter。你也可以使用下拉列表中选择从列表中可用的数据对象类。

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

    您可以使用位置选项,选择一个工作区包含新数据对象。如果一个模型与数据字典,你可以选择创建一个数据对象字典中。

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

    的参数对象myParam出现在基地工作空间。

  6. 在块参数对话框中,单击好吧

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

  1. 信号的名字框,指定信号名称等mySig。点击应用

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

  3. 创建新的数据对话框中,指定价值作为金宝appSimulink.Signal

    此外,您可以指定的名称创建一个数据类,如myPackage.Signal。另外,从下拉列表中,您可以选择一个数据对象类,存在于MATLAB路径。

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

    您可以使用位置选项,选择一个工作区包含新数据对象。如果一个模型与数据字典,你可以选择创建一个数据对象字典中。

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

    信号对象mySig出现在基地工作空间。信号属性对话框中信号仿真软件名称必须决心信号对象金宝app财产被选中。

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

创建数据对象,代表信号、参数和状态在一个模型中,您可以使用向导的数据对象。向导发现数据模型中没有相应的数据对象。

基于模型的规范中,向导创建对象和分配这些特点:

  • 信号、参数或状态的名字。

  • 参数对象的数值。

  • 数据类型。对于信号对象,包括别名等类型Sumlink.AliasType金宝appSimulink.NumericType

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

  2. 模型名称框中,输入模型,你想搜索的名称。

    默认情况下,这个盒子包含模型的名称,您打开向导。

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

    选项 描述
    根输入 名叫根级的信号轮廓尺寸块。
    根输出 名叫根级的信号外港块。

    州与这些离散块:

    离散滤波器
    离散状态空间
    离散时间积分器
    离散传递Fcn
    离散Zero-Pole
    内存
    离散PID控制器
    离散PID控制器(2自由度)
    单位延迟
    数据存储 数据存储。关于数据存储的更多信息,请参阅局部和全局数据存储
    块输出 指定信号的来源是non-root-level块。
    参数
    • 数字参数,例如这些块的参数:

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

    别名类型 您指定的数据类型替换名称配置参数>代码生成>数据类型替换。如果你有一个嵌入式编码人员许可,向导创建的数据对象金宝appSimulink.AliasType这些数据类型对象替换名称。关于数据类型替换的更多信息,请参阅模型配置参数:代码生成数据类型替换(嵌入式编码)
  4. 点击找到

    表显示该对象的数据对象。

  5. (可选)从一个数据类创建对象除了默认的类,选择旁边的复选框的对象类你想改变。选择所有的对象,单击选择所有。点击改变类。在打开的对话框中,选择类通过使用旁边的下拉列表参数信号

    如果您想要的类,不出现下拉列表,选择定制类列表。在打开的对话框中,选择该复选框旁边的类,并点击好吧

    改变默认的参数和信号类向导使用提出对象:

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

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

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

      一个参数或信号对象出现在选定的工作区。新的参数对象的缺省名称参数。新的信号对象的缺省名称团体

      下次你使用数据对象向导,该向导使用参数或信号提出了对象类模型浏览器中选择。

  6. 选中该复选框旁边的提议您想要创建的对象。选择所有的对象,单击选择所有

  7. 点击创建

    数据对象出现在基地工作空间。如果目标模型与数据字典,对象出现在字典里。

    向导中更改设置您的模型根据配置参数配置参数>诊断>数据的有效性>信号的分辨率

    • 如果你设置参数明确的只,向导部队中相应的信号和状态模型来解决新的信号对象。向导选择选项信号仿真软件名称必须决心信号对象金宝app在每个属性对话框和信号国家名称必须解决信号模型对象金宝app在每一块对话框。

    • 如果你设置参数显式和隐式明确并警告含蓄,向导不会改变的设置信号仿真软件名称必须决心信号对象金宝app国家名称必须解决信号模型对象金宝app任何信号或状态。

    考虑关闭隐式信号模型通过使用函数对象的分辨率disableimplicitsignalresolution。有关更多信息,请参见显式和隐式符号解析

数据对象向导故障排除

  • 数据对象代码生成向导编译模型为了提出信号对象的创建。由于这个原因,该向导不能用于代码生成模型是无效的。

  • 数据对象向导不建议为这些实体创建数据对象模型:

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

    • 一个信号具有相同名称的变量用一块参数。

    • 一个信号,即缺乏一个连续的块来源。

    • 信号的源块注释掉或评论。

    • 失效的数据项变异来源变体水槽块。向导只提出了对象与活动块相关联的数据项。

    • 信号和状态当你设定模型配置参数信号的分辨率没有一个

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

这个例子显示了如何创建数据对象基于外部数据源(如微软®Excel®通过使用一个脚本文件)。

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

  2. 位置信息在文件中描述外部文件中的数据,您想要转换为数据对象。例如,下面的信息创建了两个金宝app数据对象与指定的属性。第一个是一个参数,第二个是一个信号:

    %的参数ParCon = 金宝appSimulink.Parameter;ParCon.CoderInfo。StorageClass =“自定义”ParCon.CoderInfo。CustomStorageClass =“常量”;ParCon。价值=3;%的信号SigGlb = 金宝appSimulink.Signal;SigGlb。数据类型=“int8”;

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

如果你想从外部源导入目标数据,您可以编写MATLAB函数和脚本读取信息,将信息转换为数据对象,这些对象加载到基本工作空间。

您可以使用这些函数与MATLAB外部文件:

  • xmlread

  • xmlwrite

  • xlsread

  • xlswrite

  • csvread

  • csvwrite

  • dlmread

  • dlmwrite

数据对象的方法

数据类定义的功能,称为方法,用于创建和操纵的对象定义。一个类可以定义下列类型的方法。

动态方法

动态方法是一种方法,其身份取决于它的名字和隐式或显式地指定的类的对象作为它的第一个参数。您可以使用功能或点符号来指定这个物体,必须定义方法或类的实例的一个子类的一个实例的类定义的方法。例如,假设类一个定义了一个方法setName分配一个名称的一个实例一个。进一步,假设MATLAB工作区包含分配给变量的实例obj。然后,您可以使用下面的语句来分配这个名字“foo”obj:

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

一个类可以定义了一组方法有相同的名称作为其超类所定义的方法。在这种情况下,该方法定义的子类覆盖父类定义的方法的行为。金宝app仿真软件在运行时决定调用哪个方法从您指定的类的对象作为其第一个或隐式参数。因此,动态方法。

请注意

大多数模型金宝app数据对象方法是动态的方法。除非另有指定方法的文档,你可以假设一个方法是一个动态的方法。

静态方法

静态方法是一个方法,它的身份只取决于它的名字,因此在运行时不能改变。调用静态方法,使用它的完全限定名称,包括类的名称定义,其次是方法本身的名称。例如,金宝appSimulink.ModelAdvisor类定义了一个静态方法命名getModelAdvisor。这个静态方法的完全限定名称金宝appSimulink.ModelAdvisor.getModelAdvisor。下面的例子说明了一个静态方法的调用。

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

构造函数

每一个数据类定义了一个方法来创建这个类的实例。的方法名与类名相同。例如,的名字金宝appSimulink.Parameter类的构造函数金宝appSimulink.Parameter。仿真软件的数据类定义的构造函数没有参数。金宝app

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

处理与值类

金宝app模型类,包括数据对象类,分为两类:价值类和处理类。

对值类

的构造函数价值类(见构造函数)返回类的实例和实例是永久与MATLAB相关联的变量,这是最初分配。重新分配或变量传递给一个函数使MATLAB创建和分配或通过原始对象的一个副本。

例如,金宝appSimulink.NumericType是一个值类。执行下面的语句

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

创建两个类的实例金宝appSimulink.NumericType在工作区中,分配给变量x和其他y

关于处理类

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

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

只创建一个实例金宝appSimulink.ParameterMATLAB的工作区中类。变量x和y都指的是通过处理实例。

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

x。描述=“输入增益”;y.Description
ans =输入增益

大多数模型金宝app数据对象类值类。异常包括金宝appSimulink.Signal金宝appSimulink.Parameter类。

确定一个变量的值是一个对象(价值类)或者一个对象的句柄,明白了确定一个对象句柄

复制处理对象

使用复制方法的处理对象创建该对象的实例的副本。例如,ConfigSet是一个处理对象,代表模型配置集。下面的代码创建了一个复制当前模型的活动配置设置和高度的模型作为一个备用配置适合模型的发展。

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

比较数据对象

金宝app模型数据对象提供一个方法,命名isequal,决定了对象属性值是否相等。这种方法将一个对象的属性值和其他属于另一个对象并返回true (1)如果所有的值都是相同的或假(0否则)。例如,下面的代码实例化两个信号对象(A和B)和特定属性的指定值。

一个= 金宝appSimulink.Signal;B = 金宝appSimulink.Signal;一个。数据类型=“int8”;B。数据类型=“int8”;一个。InitialValue =“1.5”;B。InitialValue =“1.5”;

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

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

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

如果属性对话框中定义的一个信号是信号和信号对象相同的名称被定义为使用命令行或在模型浏览器中,可能存在歧义,当仿真软件引擎试图解决表示信号的符号名称。金宝app解决歧义的方法之一是指定一个信号的决心金宝appSimulink.Signal数据对象。选择信号仿真软件名称必须决心信号对象金宝app选择在信号属性对话框。

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

创建持久数据对象

保存数据对象,这样他们坚持当你关闭MATLAB,您可以:

  • 将对象存储在数据字典或模型的工作区。决定永久存储模型数据的地方,看到的确定在哪里存储变量和对象模型模型金宝app

  • 使用保存命令在MAT-file和保存数据对象负载命令来恢复它们的MATLAB基础工作相同或稍后的会议。配置模型加载对象从MAT-file或者脚本文件,加载模型。

加载数据对象时从文件加载模型,编写一个脚本,该脚本创建对象和配置它们的属性。另外,在MAT-file保存对象。然后使用该脚本或load命令的PreLoadFcn为模型,使用对象回调例程。假设您将数据对象保存在一个文件命名data_objects.mat,它们适用的模型是开放和活跃。在命令提示符,输入:

set_param (gcs,“PreLoadFcn”,“负载data_objects”);

负载data_objects作为模型的预加载功能。每当你打开模型中,数据对象出现在基地工作空间。

定义的类的对象必须存在于MATLAB路径恢复。如果保存的类对象获得新的属性对象保存后,模型添加新的属性恢复版本的对象。金宝app如果类失去属性保存在对象,只有属性,继续恢复。

另请参阅

||||

相关的话题