Main Content

プロパティ値を有限個のリストに制限

制限された許容値のセットを使用して System object™ プロパティを作成するときには、列挙型またはプロパティ検証のいずれかを使用できます。

金宝app®MATLAB Systemブロックで使用される System object には、列挙型またはプロパティ検証を使用できます。列挙型を使用する場合、列挙型をSimulink.IntEnumTypeから派生させることもできます。このタイプの列挙型を使用して、カスタム ヘッダーなどの属性を MATLAB System ブロックの入力または出力に追加します。Simulink モデルでの列挙型データの使用(Simulink)を参照してください。

mustBeMemberを使ったプロパティ検証

プロパティ検証を使ってプロパティの値を制限するには、検証関数mustBeMemberを使用します。

この例では、値soliddash、または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の定義は以下のとおりです。

classdefColorValues < int32enumerationblue (0) red (1) green (2)endend
ColorValuesクラスは、コード生成互換のためにint32から継承します。列挙値は有効なMATLAB 識別子でなければなりません。

System object のColorプロパティは、既定値がblueColorValuesオブジェクトとして定義されています。(1,1)Colorプロパティをスカラーとして定義します。

properties Color (1, 1) ColorValues = ColorValues.blueend

Whiteboard System object の作成

この例では、WhiteboardSystem object™ のクラス定義、2 つのタイプの有限リスト プロパティ、およびオブジェクトの使用法を説明します。Whiteboard オブジェクトは実行するたびにホワイトボードにラインを描画します。

WhiteboardSystem object の定義

typeWhiteboard.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。颜色="green"; blueInk.Color ="blue"; blueInk.Style ="dot";

いくつかのラインの描画

fori=1:3 greenInk(); blueInk();end

Figure contains an axes object. The axes object contains 6 objects of type line.

ホワイトボードのクリア

release(greenInk); release(blueInk);

Figure contains an axes object. The axes object is empty.

関連するトピック