Main Content

生成するエントリポイント関数の入力引数または出力引数の数の指定

生成されたエントリポイント関数内の入力引数または出力引数の数を制御できます。1 つの MATLAB® 関数から、異なるシグネチャをもつエントリポイント関数を生成できます。

入力引数の数の制御

エントリポイント関数が varargin を使用する場合、生成された関数で使用する引数のプロパティを指定します。

次の関数を考えてみます。

function [x, y] = myops(varargin)
%#codegen
if (nargin > 1)
    x = varargin{1} + varargin{2};
    y = varargin{1} * varargin{2};
else
    x = varargin{1};
    y = -varargin{1};
end

取得する引数が 1 つのみの関数を生成するには、-args で 1 つの引数を指定します。

codegen myops -args {3} -report

MATLAB Coder™ アプリを使用する場合は、次を行います。

  1. [入力の型を定義] ページで [入力またはグローバルの型を直接入力します] をクリックします。

  2. 引数を追加するには、変数テーブルで、varargin の右側にある Plus button をクリックします。

    App window, showing definition of varargin

  3. 各引数のプロパティを指定します。

    App window, showing properties of varargin

codegen を使用してコードを生成する場合は、MATLAB 関数で varargin を使用しない場合の入力引数の数も制御できます。

次の関数を考えてみます。

function [x, y] = myops(a,b)
%#codegen
if (nargin > 1)
    x = a + b;
    y = a * b;
else
    x = a;
    y = -a;
end

取得する引数が 1 つのみの関数を生成するには、-args で 1 つの引数を指定します。

codegen myops -args {3} -report

出力引数の数の制御

codegen を使用してコードを生成する場合は、-nargout オプションを使用して出力引数の数を指定できます。

次の関数を考えてみます。

function [x, y] = myops(a,b)
%#codegen
x = a + b;
y = a * b;
end

1 つの出力引数をもつ関数を生成します。

codegen myops -args {2 3} -nargout 1 -report

-nargout を使用して、varargout を使用するエントリポイント関数の出力引数の数を指定することもできます。

varargout を使用するように myops を書き換えます。

function varargout = myops(a,b)
%#codegen
varargout{1} = a + b;
varargout{2} = a * b;
end

1 つの出力引数に対応するコードを生成します。

codegen myops -args {2 3} -nargout 1 -report

MATLAB Coder アプリを使用している場合、関数が varargout を返す時の出力数を指定するには、または関数で定義される出力よりも少ない数の出力を生成するには、次のようにします。

  1. [入力の型を定義] ページで、入力の型を手動で定義するか、[入力の型の自動定義] を使用して定義します。

  2. [出力数] で、出力の数を選択します。

App window, showing definitions of variables a and b

関連するトピック