2016-09-28 52 views
0

我想在Matlab中定義一個數據類型,它可以是3個可能值中的1個。如果我這樣做在C我會做以下幾點:在Matlab中列舉類型的等效

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

如文檔中解釋的那樣,你可以定義一個enumerator class

classdef WeekDays 
    enumeration 
     Monday, Tuesday, Wednesday, Thursday, Friday 
    end 
end 
+0

如果我想要什麼將Matlab類的屬性限制爲某些枚舉類?你會如何建議這樣做? – Hefaestion

+0

@Hefaestion不確定你想要的是什麼,但總的來說,我認爲你可能會在上面的文檔部分中碰到'你不能設置SyntaxColors的只讀屬性'R'。 –

1

您將通過定義枚舉類的邊界類型開始:如果您希望限制類的

classdef Node 
    properties 
     k 
     c_p 
     rho 
     BC 
    end 
end 

classdef BoundaryConditionType 
    enumeration 
     adiabatic 
     convective 
     conductive 
    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