プロパティ値を有限個のリストに制限
制限された許容値のセットを使用して System object™ プロパティを作成するときには、列挙型またはプロパティ検証のいずれかを使用できます。
Simulink® の MATLAB System ブロックで使用される System object には、列挙型またはプロパティ検証を使用できます。列挙型を使用する場合、列挙型を Simulink.IntEnumType
から派生させることもできます。このタイプの列挙型を使用して、カスタム ヘッダーなどの属性を MATLAB System ブロックの入力または出力に追加します。Simulink モデルでの列挙型データの使用 (Simulink)を参照してください。
mustBeMember
を使ったプロパティ検証
プロパティ検証を使ってプロパティの値を制限するには、検証関数 mustBeMember
を使用します。
この例では、値 solid
、dash
、または dot
をもつことができる Style
プロパティを定義します。既定値は solid
で、(1,1)
はプロパティをスカラーとして定義します。
properties Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
matlab.system.mustBeMember
を使用します。properties Style (1,:) char {matlab.system.mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
列挙型プロパティ
System object で列挙型データを使用するには、列挙型をプロパティとして System object クラス定義内で参照して、列挙型クラスを別のクラス定義ファイルで定義します。
列挙プロパティを作成するには、以下が必要です。
列挙型クラスに設定された System object プロパティ
プロパティに指定可能なすべての値を定義する、関連付けられた列挙型クラス定義
この例では、System object の色の列挙型プロパティを定義します。列挙型クラス ColorValues
の定義は以下のとおりです。
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues
クラスは、コード生成互換のために int32
から継承します。列挙値は有効な MATLAB 識別子でなければなりません。System object の Color
プロパティは、既定値が blue
の ColorValues
オブジェクトとして定義されています。(1,1)
は Color
プロパティをスカラーとして定義します。
properties
Color (1, 1) ColorValues = ColorValues.blue
end
Whiteboard System object の作成
この例では、Whiteboard
System object™ のクラス定義、2 つのタイプの有限リスト プロパティ、およびオブジェクトの使用法を説明します。Whiteboard オブジェクトは実行するたびにホワイトボードにラインを描画します。
Whiteboard
System object の定義
type Whiteboard.m
classdef Whiteboard < matlab.System % Whiteboard Draw lines on a figure window % properties(Nontunable) Color (1, 1) ColorValues = ColorValues.blue Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end methods (Access = protected) function stepImpl(obj) h = Whiteboard.getWhiteboard(); switch obj.Style case "solid" linestyle = "-"; case "dash" linestyle = "--"; case "dot" linestyle = ":"; end plot(h, randn([2,1]), randn([2,1]), ... "Color",string(obj.Color), "LineStyle",linestyle); end function releaseImpl(~) cla(Whiteboard.getWhiteboard()); hold on end end methods (Static) function a = getWhiteboard() h = findobj('tag','whiteboard'); if isempty(h) h = figure('tag','whiteboard'); hold on end a = gca; end end end
System object の構成
greenInk = Whiteboard; blueInk = Whiteboard;
色を変更し、青のライン スタイルを設定します。
greenInk.Color = "green"; blueInk.Color = "blue"; blueInk.Style = "dot";
いくつかのラインの描画
for i=1:3 greenInk(); blueInk(); end
ホワイトボードをクリアします。
release(greenInk); release(blueInk);
関連するトピック
- プロパティ値の検証
- 列挙
- 列挙型のコードの生成 (MATLAB Coder)