プロパティ値を有限個のリストに制限
制限された許容値のセットを使用して System object™ プロパティを作成するときには、列挙型またはプロパティ検証のいずれかを使用できます。
金宝app®の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
の定義は以下のとおりです。
classdefColorValues < int32enumerationblue (0) red (1) green (2)endend
ColorValues
クラスは、コード生成互換のためにint32
から継承します。列挙値は有効なMATLAB 識別子でなければなりません。
System object のColor
プロパティは、既定値がblue
のColorValues
オブジェクトとして定義されています。(1,1)
はColor
プロパティをスカラーとして定義します。
properties Color (1, 1) ColorValues = ColorValues.blueend
Whiteboard System object の作成
この例では、Whiteboard
System object™ のクラス定義、2 つのタイプの有限リスト プロパティ、およびオブジェクトの使用法を説明します。Whiteboard オブジェクトは実行するたびにホワイトボードにラインを描画します。
Whiteboard
System 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
ホワイトボードのクリア
release(greenInk); release(blueInk);
関連するトピック
- プロパティ値の検証
- 列挙
- 列挙型のコードの生成(MATLAB Coder)