入力数の変更
この例では、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 でのみ使用する場合、getNumInputsImpl
と getNumOutputsImpl
は不要です。
完全なクラス定義
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
参考
getNumInputsImpl
| getNumOutputsImpl