这个例子展示了如何创建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参数<仿真软件。万博1manbetx参数结束% classdef
而不是使用自定义类名参数
或信号
,使用自定义名称命名类文件夹。例如,定义一个类mypkg.myParameter
:
的子类定义数据类万博1manbetx仿真软件。参数
或万博1manbetx仿真软件。信号
。
classdefmyParameter <仿万博1manbetx真软件。参数结束% classdef
在类定义中,将构造函数方法命名为myParameter
或mySignal
。
将包含类定义的类文件夹命名为@myParameter
或@mySignal
。
的属性
和结束
关键字包含一个属性定义块。
classdef参数<仿真软件。万博1manbetx参数属性不受约束的属性类型Prop1 = [];结束属性(PropertyType =“逻辑标量”) Prop2 = false;结束属性(PropertyType =“字符”) Prop3 ='';结束属性(PropertyType =“字符”,…AllowedValues = {“红色”;“绿色”;“蓝”}) Prop4 =“红色”;结束结束% classdef
的子类添加属性万博1manbetx仿真软件。参数
,万博1manbetx仿真软件。信号
,或万博1manbetx仿真软件。CustomStorageClassAttributes
,您可以指定以下属性类型。
属性类型 | 语法 |
---|---|
两倍数量 | 属性(PropertyType = '双标量') |
int32数量 | 属性(PropertyType = 'int32标量') |
逻辑数 | 属性(PropertyType = '逻辑标量') |
特征向量(字符) | 属性(PropertyType =“字符”) |
允许值的有限集合的字符向量 | 属性(PropertyType = 'char', AllowedValues = {'a', 'b', 'c'}) |
如果您使用MATLAB属性验证(参见验证属性值)而不是PropertyType
,属性将在类的属性对话框中显示为编辑字段。如果你使用PropertyType
和AllowedValues
,则属性对话框显示:
逻辑标量属性的复选框。
字符向量和的下拉菜单AllowedValues
。
您可以在数据类中添加构造函数,以便在实例化类时执行初始化活动。添加的构造函数不能要求输入参数。
在这个例子中,构造函数初始化object的值obj
基于可选输入参数。
classdef参数<仿真软件。万博1manbetx参数方法函数obj =参数(optionalValue)如果(nargin == 1) obj。值= optionalValue;结束结束结束%的方法结束% classdef
使用setupCoderInfo
方法配置CoderInfo
对象。然后,创建对useLocalCustomStorageClasses
方法,并打开自定义存储类设计器。
在数据类的构造函数中,调用useLocalCustomStorageClasses
方法。
classdef参数<仿真软件。万博1manbetx参数方法函数setupCoderInfo (obj) useLocalCustomStorageClasses (obj,“mypkg”);obj.CoderInfo.StorageClass =“自定义”;结束结束%的方法结束% classdef
打开包的自定义存储类设计器。
cscdesigner (“mypkg”)
定义存储类。
创建一个MATLAB文件myCustomAttribs.m
打开它进行编辑。将此文件保存到+ mypkg / @myCustomAttribs
文件夹,+ mypkg
文件夹中是否包含@ phase
和@Signal
文件夹。
定义的子类万博1manbetx仿真软件。CustomStorageClassAttributes
使用MATLAB类语法。例如,考虑一个存储类,它使用原始标识符定义数据,但也为生成的代码中的数据提供了替代名称。
classdefmyCustomAttribs <仿万博1manbetx真软件。CustomStorageClassAttributes属性(PropertyType =“字符”) AlternateName ='';结束结束% classdef
的默认实现isAddressable
方法确定存储类是否可写。
classdefmyCustomAttribs <仿万博1manbetx真软件。CustomStorageClassAttributes属性(PropertyType =“逻辑标量”) IsAlternateNameInstanceSpecific = true;结束方法函数retVal = isAddressable(hObj, hCSCDefn, hData) retVal = false;结束结束%的方法结束% classdef
的默认实现getInstanceSpecificProps
方法。
有关示例,请参见CSCTypeAttributes_FlatStructure.m
在文件夹
(开放),matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructureCSCTypeAttributes_Unstructed.m
在文件夹
(开放)。matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ + mpt \ @CSCTypeAttributes_Unstructed
请注意
这是一个可选的步骤。默认情况下,所有自定义属性都是特定于实例的,可以针对每个数据对象进行修改。但是,您可以限制哪些属性允许是特定于实例的。
的默认实现getIdentifiersForInstance
方法来定义数据类对象的标识符。
请注意
在其默认实现中,此方法查询数据对象的名称或标识符,并在生成的代码中使用该标识符。通过覆盖此方法,您可以在生成的代码中控制数据对象的标识符。
classdefmyCustomAttribs <仿万博1manbetx真软件。CustomStorageClassAttributes属性(PropertyType =“字符”) GetFunction ='';SetFunction ='';结束方法函数retVal = getIdentifiersForInstance (hCSCAttrib,…hscdefn, hData, identifier)“GetFunction”,…hData.CoderInfo.CustomAttributes.GetFunction,…“SetFunction”, hData.CoderInfo.CustomAttributes.SetFunction);结束%结束%的方法结束% classdef
如果您正在使用分组存储类,请重写getIdentifiersForGroup
方法以在生成的代码中指定组的标识符。
例如,请参见CSCTypeAttributes_FlatStructure.m
在文件夹
(开放)。matlabroot
、工具箱、仿真软件万博1manbetx\仿真软件\ dataclasses \ +仿真软件\ @CSCTypeAttributes_FlatStructure