文档

定义数据类

这个例子展示了如何子类化Simulink万博1manbetx®数据类。

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

请使用示例定义数据类

  1. 查看+万博1manbetx SimulinkDemos数据类包在文件夹中matlabroot/工具/模型/ s万博1manbetximdemos / dataclasses开放).

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

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

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

  4. 修改数据类定义。

手动定义数据类

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

  2. 创建类文件夹@ phase而且@Signal内部+ mypkg

    请注意

    万博1manbetxSimulink需要在内部定义数据类+包/ @Class文件夹。

  3. @ phase文件夹,创建MATLAB文件Parameter.m然后打开进行编辑。

  4. 的子类定义一个数据类万博1manbetx仿真软件。参数使用MATLAB类语法。

    classdef参数< Simulink万博1manbetx。参数结束% classdef

以外的自定义类名参数信号,使用自定义名称命名类文件夹。例如,定义一个类mypkg.myParameter

  • 的子类定义数据类万博1manbetx仿真软件。参数万博1manbetx仿真软件。信号

    classdefmyParameter < 万博1manbetxSimulink。参数结束% classdef

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

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

可选:向数据类中添加属性

属性而且结束关键字包含一个属性定义块。

classdef参数< Simulink万博1manbetx。参数属性不受约束的属性类型Prop1 = [];结束属性(PropertyType =“逻辑标量”) Prop2 = false;结束属性(PropertyType =“字符”Prop3 =结束属性(PropertyType =“字符”...AllowedValues = {“红色”“绿色”“蓝”}) Prop4 =“红色”结束结束% classdef

的子类中添加属性万博1manbetx仿真软件。参数万博1manbetx仿真软件。信号,或万博1manbetx仿真软件。CustomStorageClassAttributes,可以指定以下属性类型。

属性类型 语法
两倍数量 属性(PropertyType = 'double scalar')
int32数量 属性(PropertyType = 'int32标量')
逻辑数 属性(PropertyType = '逻辑标量')
字符向量(char) 属性(PropertyType = 'char')
具有有限允许值集的字符向量 属性(PropertyType = 'char', AllowedValues = {'a', 'b', 'c'})

如果使用MATLAB属性验证(请参阅验证属性值(MATLAB))代替PropertyType而且AllowedValues,属性验证不会影响类的属性对话框中的外观。例如,布尔值(布尔)属性不会作为复选框出现在属性对话框中。这是使用的最佳实践PropertyType而且AllowedValues而不是MATLAB属性验证。

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

可以在数据类中添加构造函数,以便在实例化类时执行初始化活动。

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

classdef参数< Simulink万博1manbetx。参数方法函数obj =参数(optionalValue)如果(nargin == 1)Value = optionalValue;结束结束结束%的方法结束% classdef

可选:自定义存储类

使用setupCoderInfo方法来配置CoderInfo类的对象。然后,创建对useLocalCustomStorageClasses方法,并打开自定义存储类设计器。

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

    classdef参数< Simulink万博1manbetx。参数方法函数setupCoderInfo (obj) useLocalCustomStorageClasses (obj,“mypkg”);obj.CoderInfo.StorageClass =“自定义”结束结束%的方法结束% classdef
  2. 打开包的自定义存储类设计器。

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

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

  1. 创建MATLAB文件myCustomAttribs.m然后打开进行编辑。将此文件保存在+ mypkg / @myCustomAttribs文件夹,+ mypkg文件夹中是否包含@ phase而且@Signal文件夹。

  2. 的子类万博1manbetx仿真软件。CustomStorageClassAttributes使用MATLAB类语法。例如,考虑一个自定义存储类,它使用原始标识符定义数据,但也为生成的代码中的数据提供了替代名称。

    classdefmyCustomAttribs < 万博1manbetxSimulink。CustomStorageClassAttributes属性(PropertyType =“字符”) AlternateName =结束结束% classdef

  3. 方法的默认实现isAddressable方法确定自定义存储类是否可写。

    classdefmyCustomAttribs < 万博1manbetxSimulink。CustomStorageClassAttributes属性(PropertyType =“逻辑标量”IsAlternateNameInstanceSpecific = true;结束方法函数isAddressable(hObj, hCSCDefn, hData)结束结束%的方法结束% classdef
  4. 方法的默认实现getInstanceSpecificProps方法。

    有关示例,请参见CSCTypeAttributes_FlatStructure.m在文件夹里matlabroot、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructure开放),CSCTypeAttributes_Unstructed.m在文件夹里matlabroot、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ + mpt \ @CSCTypeAttributes_Unstructed开放).

    请注意

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

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

    请注意

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

    classdefmyCustomAttribs < 万博1manbetxSimulink。CustomStorageClassAttributes属性(PropertyType =“字符”GetFunction =;SetFunction =结束方法函数reval = getIdentifiersForInstance(hCSCAttrib,...hCSCDefn, hData, identifier) retVal = struct(“GetFunction”...hData.CoderInfo.CustomAttributes.GetFunction,...“SetFunction”, hData.CoderInfo.CustomAttributes.SetFunction);结束结束%的方法结束% classdef
  6. 类的默认实现,如果使用分组自定义存储类getIdentifiersForGroup方法在生成的代码中为组指定标识符。

    有关示例,请参见CSCTypeAttributes_FlatStructure.m在文件夹里matlabroot、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructure开放).

相关的话题

这个话题有用吗?