相当于Matlab中的枚举类型

时间:2016-09-28 16:40:00

标签: matlab enums

我想在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

2 个答案:

答案 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