プロパティ属性の定義
"プロパティ属性" はプロパティに詳細情報を追加して、プロパティを制御できるようにします。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 値は除く)
次の属性をもたない。
Nontunable
、Dependent
、Abstract
、Constant
。既定の値はなし
パブリック設定にできない
GetAccess = Public
(既定の設定)プロパティを離散状態として定義する場合は、
saveObjectImpl
またはloadObjectImpl
を使用してオブジェクトを手動で保存または上書きする必要はない。
たとえば、Count
プロパティを離散状態として定義します。
properties (DiscreteState)
Count;
end
カスタム プロパティの挿入
[カスタム プロパティ] ダイアログ ボックスを使用すると、選択した属性を使用して新しいプロパティを定義できます。カスタム プロパティを追加するには、[エディター] ツールストリップから [プロパティの挿入] ドロップダウンを選択し、[カスタム プロパティ...] を選択します。ダイアログ ボックスを使用して、カスタム プロパティのプロパティ アクセス、System object 属性、および MATLAB プロパティ属性を設定します。
アクセス
アクセス | 設定 | 説明 |
---|---|---|
SetAccess と GetAccess | public | プロパティは同じ System object にある、またはそれを参照する別の System object にある他のどのコードからもアクセスできます。 |
protected | プロパティは同じ System object またはサブクラスのコードでのみ使用できます。 | |
private | プロパティは同じ System object のコードからのみアクセスできます。 | |
immutable | System object を作成するときにのみ、このプロパティ値を設定できます。プロパティ値を変更することはできません。この設定は |
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