Main Content

入力数の変更

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

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

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

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

最大 3 つの入力が可能

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

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

完全なクラス定義

classdefAddTogether < matlab.System% Add inputs togethermethods(Access = protected)functiony = stepImpl(~,x1,x2,x3)switchnargincase2 y = x1;case3 y = x1 + x2;case4 y = x1 + x2 + x3;otherwisey = [];endendendend

入力数を 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メソッドを実装して入力の数を指定する。

完全なクラス定義

classdefAddTogether2 < matlab.System% Add inputs together. The number of inputs is controlled by the% nontunable property |NumInputs|.properties(Nontunable) NumInputs = 3;% Default valueendmethods(Access = protected)functiony = stepImpl(obj,x1,x2,x3)switchobj.NumInputscase1 y = x1;case2 y = x1 + x2;case3 y = x1 + x2 + x3;otherwisey = [];endendfunctionvalidatePropertiesImpl(obj)if((obj.NumInputs < 1) ||...(obj.NumInputs > 3)) error("Only 1, 2, or 3 inputs allowed.");endendfunctionnumIn = getNumInputsImpl(obj) numIn = obj.NumInputs;endendend

入力数を 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

参考

|

関連するトピック