生成するエントリポイント関数の入力引数または出力引数の数の指定
生成されたエントリポイント関数内の入力引数または出力引数の数を制御できます。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