基本的な System object の定義
この例では、数値を 1 つずつインクリメントする基本的な System object™ の作成方法を示します。この例で使用するクラス定義ファイルには、System object の定義に最低限必要な要素が含まれています。
System object クラスの作成
MAT ファイルを作成して編集するか、MATLAB® エディターを使用して、System object を作成することができます。この例では、MATLAB エディターの [新規] メニューの使用方法を説明します。
MATLAB の [エディター] タブで、[新規] 、 [System object] 、 [標準] の順に選択します。シンプルな System object テンプレートが開きます。
matlab.System
からのオブジェクトをサブクラス化します。ファイルの最初の行でUntitled
をAddOne
に置き換えます。classdef AddOne < matlab.System
System object は、1 つの
matlab.System
基底クラスで構成され、1 つ以上の mixin クラスを含む場合があります。基底クラスと mixin クラスは、クラス定義ファイルの最初の行で指定します。ファイルを
AddOne.m
という名前で保存します。
アルゴリズムの定義
stepImpl
メソッドには、オブジェクトを呼び出すときに実行するアルゴリズムが含まれています。System object によって実行されるアクションを含むように、このメソッドを定義します。
作成した標準の System object 内にある
stepImpl
メソッドのテンプレートを検査します。methods (Access = protected) function y = stepImpl(obj,u) % Implement algorithm. Calculate y as a function of input u and % discrete states. y = u; end end
stepImpl
メソッドは内部メソッドであり、直接の呼び出しや実行は行われないため、このメソッドのアクセスは常にprotected
に設定します。静的メソッドを除くすべてのメソッドでは、System object のハンドルが最初の入力引数でなければなりません。MATLAB エディターによって挿入される既定値は
obj
です。System object のハンドルには任意の名前を使用できます。既定では、入力と出力の数はいずれも 1 つです。入力と出力は [入力/出力] を使って追加できます。可変個の入力や出力を使用することもできます。入力数の変更を参照してください。
あるいは、MAT ファイルを編集して System object を作成する場合は、[メソッドの挿入] 、 [アルゴリズムの実装] を使用して
stepImpl
メソッドを追加できます。stepImpl
メソッドで計算を変更してu
の値に1
を追加します。methods (Access = protected) function y = stepImpl(~,u) y = u + 1; end
ヒント
オブジェクト ハンドルを渡す代わりにチルダ (
~
) を使用して、オブジェクト ハンドルが関数で使用されていないことを示すことができます。オブジェクト ハンドルの代わりに「~」を使用することによって、未使用の変数に関する警告の発生が回避されます。既定の設定で標準テンプレートに含まれている未使用のメソッドを削除します。
これらのメソッドを変更して System object のアクションとプロパティをさらに追加することができます。まったく変更を加えないことも可能であり、その場合でも System object は意図したように機能します。
これで、クラス定義ファイルに、この System object に必要なすべてのコードが含まれました。
classdef AddOne < matlab.System % ADDONE Compute an output value one greater than the input value % All methods occur inside a methods declaration. % The stepImpl method has protected access methods (Access = protected) function y = stepImpl(~,u) y = u + 1; end end end
参考
stepImpl
| getNumInputsImpl
| getNumOutputsImpl
| matlab.System