Matlab中枚举类型的等价性

Matlab中枚举类型的等价性,matlab,enums,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 BoundaryTyp

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

如文档中所述,您可以定义


如文档中所述,您可以定义


首先为边界类型定义枚举类:

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

首先为边界类型定义枚举类:

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

如果我想将Matlab类的属性限制为某个枚举器类,该怎么办?你建议怎么做?@Hefaestion不确定你到底想要什么,但总的来说,我认为你可能对上面文档中的“你不能设置SyntaxColor的只读属性‘R’”部分感兴趣。如果我想将Matlab类的属性限制为某个枚举器类,该怎么办?您建议怎么做?@Hefaestion不确定您到底想要什么,但总的来说,我认为您可能对上述文档中的“您不能设置SyntaxColor的只读属性“R”部分感兴趣。”