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 つの引数を指定します。

fiaccel myops -args {fi(3, 1, 16, 13)} -report

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 つの引数を指定します。

fiaccel myops -args {fi(3, 1, 16, 13)} -report

出力引数の数の制御

fiaccel を使用する場合、-nargout オプションを使用して出力引数の数を指定できます。

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

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

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

fiaccel myops -args {fi(3,1,16,13) fi(3,1,16,13)} -nargout 1 -report

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

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

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

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

fiaccel myops -args {fi(3,1,16,13) fi(3,1,16,13)} -nargout 1 -report

App window, showing definitions of variables a and b

関連するトピック