Main Content

入力数の変更

この例では、getNumInputsImpl を使用した場合と使用しない場合の System object™ に対する入力数の設定方法を示します。

可変個の入力または出力があり、Simulink® で System object を使用する場合は、クラス定義ファイルに getNumInputsImpl メソッドまたは getNumOutputsImpl メソッドを含めなければなりません。

これらの例は、入力数の変更を示しています。出力数を変更する場合も、同じ原則が適用されます。

すべての System object Impl メソッドと同様に、getNumInputsImpl メソッドと getNumOutputsImpl メソッドのアクセスは常に protected に設定します。これらのメソッドはすべて直接呼び出されない内部メソッドであるからです。

最大 3 つの入力が可能

この例では、入力の数の変更を可能にする System object の記述方法を説明します。

stepImpl メソッドを更新して 1 つ、2 つ、または 3 つの入力を処理するコードを追加し、最大 3 つの入力を受け入れます。この System object を MATLAB でのみ使用する場合、getNumInputsImplgetNumOutputsImpl は不要です。

完全なクラス定義

classdef AddTogether < matlab.System
    % Add inputs together
    
    methods (Access = protected)
        function y = stepImpl(~,x1,x2,x3)
            switch nargin
                case 2
                    y = x1;
                case 3
                    y = x1 + x2;
                case 4
                    y = x1 + x2 + x3;
                otherwise
                    y = [];
            end  
        end
    end
end

入力数を 1 つ、2 つ、3 つとしてこの System object を実行します。

addObj = AddTogether;
addObj(2)
ans =

     2

addObj(2,3)
ans =

     5

addObj(2,3,4)
ans =

     9

プロパティを使用した入力と出力の数の制御

この例では、オブジェクトを実行する前に入力および出力の数の変更を可能にする System object の記述方法を説明します。System object が Simulink に含まれる場合は、このメソッドを使用します。

  • 入力の数を制御する調整不可能なプロパティ NumInputs を追加する。

  • 関連付けられた getNumInputsImpl メソッドを実装して入力の数を指定する。

完全なクラス定義

classdef AddTogether2 < matlab.System
    % Add inputs together.  The number of inputs is controlled by the
    % nontunable property |NumInputs|.
    
    properties (Nontunable)
        NumInputs = 3;   % Default value
    end
    methods (Access = protected)
        function y = stepImpl(obj,x1,x2,x3)
            switch obj.NumInputs
                case 1
                    y = x1;
                case 2
                    y = x1 + x2;
                case 3
                    y = x1 + x2 + x3;
                otherwise
                    y = [];
            end  
        end
        function validatePropertiesImpl(obj)
            if ((obj.NumInputs < 1) ||...
                    (obj.NumInputs > 3))
                error("Only 1, 2, or 3 inputs allowed.");
            end
        end
        
        function numIn = getNumInputsImpl(obj)
            numIn = obj.NumInputs;
        end
    end
end

入力数を 1 つ、2 つ、3 つとしてこの System object を実行します。

addObj = AddTogether2;
addObj.NumInputs = 1;
addObj(2)
ans =

     2

release(addObj);
addObj.NumInputs = 2;
addObj(2,3)
ans =

     5

release(addObj);
addObj.NumInputs = 3;
addObj(2,3,4)
ans =

     9

参考

|

関連するトピック