定义数据类
这个例子展示了如何子类化Simulink万博1manbetx®数据类。
使用MATLAB®类语法,用于在包中创建数据类。可选地,将属性分配给数据类并定义自定义存储类。
请使用示例定义数据类
查看
+万博1manbetx SimulinkDemos
数据类包在文件夹中
(开放).matlabroot
/工具/模型/ s万博1manbetximdemos / dataclasses这个包包含预定义的数据类。
将文件夹复制到要定义数据类的位置。
重命名文件夹
+ mypkg
并将其父文件夹添加到MATLAB路径中。修改数据类定义。
手动定义数据类
创建一个包文件夹
+ mypkg
并将其父文件夹添加到MATLAB路径中。创建类文件夹
@ phase
而且@Signal
内部+ mypkg
.请注意
万博1manbetxSimulink需要在内部定义数据类
+包/ @Class
文件夹。在
@ phase
文件夹,创建MATLAB文件Parameter.m
然后打开进行编辑。的子类定义一个数据类
万博1manbetx仿真软件。参数
使用MATLAB类语法。classdef参数< Simulink万博1manbetx。参数结束% classdef
以外的自定义类名参数
或信号
,使用自定义名称命名类文件夹。例如,定义一个类mypkg.myParameter
:
的子类定义数据类
万博1manbetx仿真软件。参数
或万博1manbetx仿真软件。信号
.classdefmyParameter < 万博1manbetxSimulink。参数结束% classdef
在类定义中,将构造函数方法命名为
myParameter
或mySignal
.将包含类定义的类文件夹命名为
@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
方法,并打开自定义存储类设计器。
在数据类中的构造函数中,调用
useLocalCustomStorageClasses
方法。classdef参数< Simulink万博1manbetx。参数方法函数setupCoderInfo (obj) useLocalCustomStorageClasses (obj,“mypkg”);obj.CoderInfo.StorageClass =“自定义”;结束结束%的方法结束% classdef
打开包的自定义存储类设计器。
cscdesigner (“mypkg”)
定义自定义存储类。
可选:为自定义存储类定义自定义属性
创建MATLAB文件
myCustomAttribs.m
然后打开进行编辑。将此文件保存在+ mypkg / @myCustomAttribs
文件夹,+ mypkg
文件夹中是否包含@ phase
而且@Signal
文件夹。的子类
万博1manbetx仿真软件。CustomStorageClassAttributes
使用MATLAB类语法。例如,考虑一个自定义存储类,它使用原始标识符定义数据,但也为生成的代码中的数据提供了替代名称。classdefmyCustomAttribs < 万博1manbetxSimulink。CustomStorageClassAttributes属性(PropertyType =“字符”) AlternateName =”;结束结束% classdef
方法的默认实现
isAddressable
方法确定自定义存储类是否可写。classdefmyCustomAttribs < 万博1manbetxSimulink。CustomStorageClassAttributes属性(PropertyType =“逻辑标量”IsAlternateNameInstanceSpecific = true;结束方法函数isAddressable(hObj, hCSCDefn, hData)结束结束%的方法结束% classdef
方法的默认实现
getInstanceSpecificProps
方法。有关示例,请参见
CSCTypeAttributes_FlatStructure.m
在文件夹里
(开放),matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructureCSCTypeAttributes_Unstructed.m
在文件夹里
(开放).matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ + mpt \ @CSCTypeAttributes_Unstructed请注意
这是一个可选步骤。默认情况下,所有自定义属性都是特定于实例的,并且可以为每个数据对象修改。但是,您可以限制允许哪些属性是特定于实例的。
方法的默认实现
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
类的默认实现,如果使用分组自定义存储类
getIdentifiersForGroup
方法在生成的代码中为组指定标识符。有关示例,请参见
CSCTypeAttributes_FlatStructure.m
在文件夹里
(开放).matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructure