メインコンテンツ

プロパティ属性の定義

"プロパティ属性" はプロパティに詳細情報を追加して、プロパティを制御できるようにします。MATLAB® のプロパティ属性とプロパティ検証に加えて、System object は Nontunable または DiscreteState を使用できます。複数の属性を指定する場合は、属性をコンマで区切ります。

プロパティを調整不可能として指定

既定では、すべてのプロパティは "調整可能" です。つまり、プロパティの値はいつでも変更可能です。

データ処理の開始後、アルゴリズムが定数の値に依存する場合は、プロパティに Nontunable 属性を使用します。プロパティを調整不可能と定義することで、変化する値のチェックやそれらへの応答を行う必要がなくなり、アルゴリズムの効率を高められる場合があります。コード生成では、プロパティを調整不可能と定義することで、そのプロパティに関連付けられたメモリの最適化が可能になります。入力端子または出力端子の数に影響を及ぼすプロパティはすべて、調整不可能として定義します。

メモ

ハンドル クラスである MATLAB System object™ がオブジェクトの調整不可能なプロパティとして割り当てられている場合、この matlab.System オブジェクトのプロパティの変更は検出されません。値クラスである matlab.System オブジェクトのプロパティの変更は検出されます。調整不可能な matlab.System プロパティが、あるハンドル クラスから別のハンドル クラスに変更された場合、この変更は検出されます。

System object を使用する場合、オブジェクトを呼び出す前か関数 release を呼び出した後にのみ、調整不可能なプロパティを変更できます。たとえば、InitialValue プロパティを調整不可能として定義し、その値を 0 に設定します。

properties (Nontunable)
   InitialValue = 0;
end

プロパティを DiscreteState として指定

アルゴリズムで状態を保持するプロパティを使用している場合、これらのプロパティに DiscreteState 属性を割り当てることができます。この属性をもつプロパティは、ユーザーが getDiscreteState を呼び出すと getDiscreteStateImpl メソッドを通じて状態値を表示します。DiscreteState 属性をもつプロパティには以下の制限が適用されます。

  • 数値、論理値または fi 値 (スケーリングされた倍精度の fi 値は除く)

  • 次の属性をもたない。NontunableDependentAbstractConstant

  • 既定の値はなし

  • パブリック設定にできない

  • GetAccess = Public (既定の設定)

  • プロパティを離散状態として定義する場合は、saveObjectImplまたはloadObjectImplを使用してオブジェクトを手動で保存または上書きする必要はない。

たとえば、Count プロパティを離散状態として定義します。

properties (DiscreteState)
   Count;
end

カスタム プロパティの挿入

[カスタム プロパティ] ダイアログ ボックスを使用すると、選択した属性を使用して新しいプロパティを定義できます。カスタム プロパティを追加するには、[エディター] ツールストリップから [プロパティの挿入] ドロップダウンを選択し、[カスタム プロパティ...] を選択します。ダイアログ ボックスを使用して、カスタム プロパティのプロパティ アクセス、System object 属性、および MATLAB プロパティ属性を設定します。

アクセス

アクセス設定説明
SetAccessGetAccess public

プロパティは同じ System object にある、またはそれを参照する別の System object にある他のどのコードからもアクセスできます。

protected

プロパティは同じ System object またはサブクラスのコードでのみ使用できます。

private

プロパティは同じ System object のコードからのみアクセスできます。

immutable

System object を作成するときにのみ、このプロパティ値を設定できます。プロパティ値を変更することはできません。この設定は SetAccess にのみ適用されます。

System object の属性

属性説明
Logicalプロパティ値を logical スカラー値に制限します。0 や 1 など、論理値に変換できる任意のスカラー値も有効です。
Nontunableシステムの実行中にプロパティ値の変更を禁止します。
DiscreteState状態値を保持します。
PositiveIntegerプロパティ値を正の整数値に制限します。

MATLAB プロパティの属性

属性説明
Constantこのプロパティはクラスのすべてのインスタンスで 1 つの値のみをもちます。
Hiddenプロパティはプロパティ リストに表示されません。
Dependentプロパティ値はオブジェクトに保存されません。関数 set および get は、プロパティ名を使用するオブジェクトにインデックスを適用することではプロパティにアクセスできません。

選択した属性を使用してプロパティを作成するには、[挿入] をクリックします。MATLAB エディターがプロパティをコードに挿入します。

さまざまなプロパティ属性をもつクラスの例

この例では、2 つの調整不可能なプロパティと 1 つの離散状態プロパティに加え、プロパティ属性を設定するための MATLAB クラスのプロパティ検証も説明します。

classdef Counter < matlab.System
% Counter Increment a counter to a maximum value

  % These properties are nontunable. They cannot be changed 
  % after the setup method has been called or while the
  % object is running.
  properties (Nontunable)
      % The initial value of the counter
      InitialValue = 0
      % The maximum value of the counter, must be a positive integer scalar
      MaxValue (1, 1) {mustBePositive, mustBeInteger} = 3
  end
  
  properties
      % Whether to increment the counter, must be a logical scalar
      Increment (1, 1) logical = true
  end
   
  properties (DiscreteState)
      % Count state variable
      Count
  end
      
  methods (Access = protected)
      % Increment the counter and return its value
      % as an output
  
      function c = stepImpl(obj)
          if obj.Increment && (obj.Count < obj.MaxValue)
              obj.Count = obj.Count + 1;
          else
              disp(['Max count, ' num2str(obj.MaxValue) ' ,reached'])
          end
          c = obj.Count;
      end
      
      % Setup the Count state variable
      function setupImpl(obj)
          obj.Count = 0;
      end
      
      % Reset the counter to one.
      function resetImpl(obj)
          obj.Count = obj.InitialValue;
      end
  end
end

参考

トピック