2016-09-28 11 views
0

Matlabにデータ型を定義したいと思います。もし私が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には、2通りの方法があります。最初は唯一以降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 
関連する問題