主要内容

定义数据类

此示例显示了Subclass Simulink的方式金宝app®数据类。

使用MATLAB®类语法在包中创建数据类。(可选)将属性分配给数据类并定义存储类。

使用示例来定义数据类

  1. 查看+金宝app SimulinkDemos.文件夹中的数据类包matlabroot/工具箱/ sim金宝appulink / simdemos / dataclasses打开)。

    这个包包含预定义的数据类。

  2. 将文件夹复制到要定义数据类的位置。

  3. 重命名文件夹+ mypkg.并将其父文件夹添加到MATLAB路径。

  4. 修改数据类定义。

手动定义数据类

  1. 创建包文件夹+ mypkg.并将其父文件夹添加到MATLAB路径。

  2. 创建类文件夹@范围@信号里面+ mypkg.

    笔记

    金宝appSimulink需要在内部定义数据类+包/ @类文件夹。

  3. @范围文件夹,创建MATLAB文件参数.M.并打开它以编辑。

  4. 定义是一个子类的数据类金宝appSimulink.Parameter.使用matlab类语法。

    Classdef.参数<仿真软件。金宝app范围结尾% classdef

使用自定义类名而不是范围信号,使用自定义名称命名类文件夹。例如,定义一个类mypkg.myParameter

  • 的子类定义数据类金宝appSimulink.Parameter.金宝app仿真软件。信号

    Classdef.my parameter <金宝appsimulink.parameter.结尾% classdef

  • 在类定义中,将构造函数方法命名为myParametermysignal.

  • 将包含类定义的类文件夹命名为@myParameter@mySignal

可选:为数据类添加属性

属性结尾关键字附上属性定义块。

Classdef.参数<仿真软件。金宝app范围属性%不受约束的财产类型Prop1 = [];结尾属性(PropertyType ='逻辑标量')prop2 = false;结尾属性(PropertyType =“字符”) Prop3 ='';结尾属性(PropertyType =“字符”......允许值= {'红色的';'绿色';“蓝”}) Prop4 ='红色的';结尾结尾% classdef

的子类添加属性金宝appSimulink.Parameter.金宝app仿真软件。信号, 或者金宝app仿真软件。CustomStorageClassAttributes,您可以指定以下属性类型。

属性类型 句法
双号 属性(PropertyType = '双标量')
int32数量 属性(PropertyType = 'int32标量')
逻辑号 属性(PropertyType = '逻辑标量')
字符向量(char) 属性(propertytype ='char')
具有有限允许值集的字符向量 属性(propertytype ='char',允许值= {'a','b','c'})

如果使用MATLAB属性验证(请参阅验证属性值) 代替财产种类,属性将显示为类属性对话框中的编辑字段。如果你使用财产种类允许的价值,则属性对话框显示:

  • 一个复选框,用于逻辑标量属性。

  • 字符向量的下拉菜单和允许的价值

可选:将初始化代码添加到数据类

可以在数据类中添加构造函数,以便在类实例化时执行初始化活动。添加的构造函数不能要求输入参数。

在本例中,构造函数初始化object的值obj.基于一个可选的输入参数。

Classdef.参数<仿真软件。金宝app范围方法函数obj =参数(可选value)如果(nargin == 1)值= optionalValue;结尾结尾结尾% 方法结尾% classdef

可选:定义存储类

使用setupcoderinfo.方法配置CoderInfo你班上的对象。然后,创建一个电话USELOCALCUSTOMSTORAGECLASSES.方法并打开自定义存储类设计器。

  1. 在数据类的构造函数中,调用USELOCALCUSTOMSTORAGECLASSES.方法。

    Classdef.参数<仿真软件。金宝app范围方法函数setupcoderinfo(obj)USELOCALCUSTOMSTORAGECLASSES(OBJ,“mypkg”);obj.CoderInfo.StorageClass =“自定义”;结尾结尾% 方法结尾% classdef
  2. 为包打开自定义存储类设计器。

    cscdesigner (“mypkg”
  3. 定义存储类。

可选:为存储类定义自定义属性

  1. 创建一个matlab文件myCustomAttribs.m并打开它以编辑。保存此文件+ mypkg / @ mycustomattribs文件夹,其中+ mypkg.是包含该文件夹@范围@信号文件夹。

  2. 定义一个子类金宝app仿真软件。CustomStorageClassAttributes使用matlab类语法。例如,考虑使用原始标识符定义数据的存储类,但也为生成的代码中的数据提供了备用名称。

    Classdef.mycustomattribs 属性(PropertyType =“字符”) AlternateName ='';结尾结尾% classdef

  3. 覆盖默认实现可见确定存储类是否可写的方法。

    Classdef.mycustomattribs 属性(PropertyType ='逻辑标量')IsAlterNateNameInstancific = True;结尾方法函数RetVal = ISAddressable(HOBJ,HCSCDEFN,HDATA)RetVal = false;结尾结尾% 方法结尾% classdef
  4. 覆盖默认实现getInstancespecificprops.方法。

    有关示例,请参见CSCTypeAttributes_FlatStructure.m在文件夹中matlabroot\ toolbox金宝app \ simulink \ simulink \ dataclasses \ + simulink \ @csctypeattributes_flatstructure打开) 和csctypeattributes_unstructed.m在文件夹中matlabroot\ toolbox金宝app \ simulink \ simulink \ dataclasses \ + mpt \ @csctypeattributes_unstructed打开)。

    笔记

    这是一个可选步骤。默认情况下,所有自定义属性都是特定于实例的,并且对于每个数据对象来修改。但是,您可以限制允许哪个属性是特定于实例的。

  5. 覆盖默认实现GetidentifiersForinstance.定义数据类对象标识符的方法。

    笔记

    在其默认实现中,该方法查询数据对象的名称或标识符,并在生成的代码中使用该标识符。通过覆盖此方法,您可以在生成的代码中控制数据对象的标识符。

    Classdef.mycustomattribs 属性(PropertyType =“字符”) GetFunction ='';setFunction =.'';结尾方法函数Retval = GetidentifiersForInstance(HCScattrib,......hcscdefn,hdata,标识符)RetVal = struct('GetFunction'......hdata.coderinfo.customAttributes.getFunction,......“SetFunction”,hdata.coderinfo.customattributes.setFunction);结尾结尾% 方法结尾% classdef
  6. 如果使用分组存储类,请覆盖默认实现getIdentifiersForGroup方法以在生成的代码中指定组的标识符。

    例如,请参见CSCTypeAttributes_FlatStructure.m在文件夹中matlabroot\ toolbox金宝app \ simulink \ simulink \ dataclasses \ + simulink \ @csctypeattributes_flatstructure打开)。

相关的话题