Main Content

基本的な System object の定義

この例では、数値を 1 つずつインクリメントする基本的な System object™ の作成方法を示します。この例で使用するクラス定義ファイルには、System object の定義に最低限必要な要素が含まれています。

System object クラスの作成

MAT ファイルを作成して編集するか、MATLAB® エディターを使用して、System object を作成することができます。この例では、MATLAB エディターの [新規] メニューの使用方法を説明します。

  1. MATLAB の [エディター] タブで、[新規][System object][標準] の順に選択します。シンプルな System object テンプレートが開きます。

  2. matlab.System からのオブジェクトをサブクラス化します。ファイルの最初の行で UntitledAddOne に置き換えます。

    classdef AddOne < matlab.System
    

    System object は、1 つの matlab.System 基底クラスで構成され、1 つ以上の mixin クラスを含む場合があります。基底クラスと mixin クラスは、クラス定義ファイルの最初の行で指定します。

  3. ファイルを AddOne.m という名前で保存します。

アルゴリズムの定義

stepImpl メソッドには、オブジェクトを呼び出すときに実行するアルゴリズムが含まれています。System object によって実行されるアクションを含むように、このメソッドを定義します。

  1. 作成した標準の 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 メソッドを追加できます。

  2. stepImpl メソッドで計算を変更して u の値に 1 を追加します。

    methods (Access = protected)
        
        function y = stepImpl(~,u)
          y = u + 1;
        end
    

    ヒント

    オブジェクト ハンドルを渡す代わりにチルダ (~) を使用して、オブジェクト ハンドルが関数で使用されていないことを示すことができます。オブジェクト ハンドルの代わりに「~」を使用することによって、未使用の変数に関する警告の発生が回避されます。

  3. 既定の設定で標準テンプレートに含まれている未使用のメソッドを削除します。

    これらのメソッドを変更して 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

参考

| | |

関連するトピック