我想在Matlab中定义一个数据类型,它可以是3个可能值中的1个。如果我在C中这样做,我会做以下事情:
typedef enum
{
TYPE1,
TYPE2,
TYPE3,
} new_type_t;
new_type_t variable = TYPE1;
如何在Matlab中实现类似的功能?
理想情况下,我想要一个Matlab类,其属性仅限于某些枚举类型。
我尝试使用Matlab代码:
classdef Node
classdef BoundaryTypes
enumeration
adiabatic
convective
conductive
end
end
properties
k
c_p
rho
BC %type of boundary condition
end
end
答案 0 :(得分:2)
如文档中所述,您可以定义enumerator class。
classdef WeekDays
enumeration
Monday, Tuesday, Wednesday, Thursday, Friday
end
end
答案 1 :(得分:1)
您首先要为边界类型定义枚举类:
classdef BoundaryConditionType
enumeration
adiabatic
convective
conductive
end
end
然后你将构建你的节点类:
classdef Node
properties
k
c_p
rho
BC
end
end
如果您希望限制BC
的课程,有两种方法。第一个仅适用于R2016a以后:
classdef Node
properties
k
c_p
rho
BC BoundaryType
end
end
如果您使用的是旧版本,则可以实施限制该属性类的set
方法:
classdef Node
properties
k
c_p
rho
BC
end
methods
function obj = set.BC(obj, val)
assert(isa(val,'BoundaryConditionType'))
obj.BC = val;
end
end
end