メインコンテンツ

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

MATLAB® コードで取得する入力や生成される出力の数が生成コードに含める必要がある数より多い場合、不要な引数のコードを生成しないようにコード ジェネレーターに指示できます。

入力引数の数の制御

次のいずれかの方法を使用して、生成されるエントリポイント関数に含める入力引数の数を制御できます。

  • MATLAB エントリポイント関数で varargin を使用している場合、コマンド ラインで codegen 関数を使用するか MATLAB Coder™ アプリを使用してコードを生成します。

  • MATLAB エントリポイント関数で varargin を使用していない場合、コマンド ラインで codegen 関数を使用してコードを生成します。

次の関数を考えてみます。どちらの関数も柔軟な数の入力引数をサポートします。

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

コマンド ラインの入力

コマンド ラインで、codegen コマンドの -args オプションに引数を 1 つ提供して、入力引数を 1 つだけ取得する関数を生成します。以下に例を示します。

codegen myops1 -config:lib -args {0}
codegen myops2 -config:lib -args {0}

生成される関数シグネチャに含まれる入力引数が 1 つだけになります。

void myops1(double varargin_1, double *x, double *y)
void myops2(double a, double *x, double *y)

MATLAB Coder アプリの使用

引数を 1 つだけ取得する関数を MATLAB Coder アプリを使用して生成するには、myops1 をエントリポイント関数として追加します。アプリの [エントリ ポイント] ペインで、myops1 への入力が varargin であることが示されます。

Entry Points pane, showing undefined varargin

引数を追加するには、[入力の追加] ボタン をクリックします。

Entry Points pane, showing definition of varargin{1}

出力引数の数の制御

生成されるエントリポイント関数の出力引数の数は、コマンド ラインで codegen 関数を使用するか MATLAB Coder アプリを使用して制御できます。

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

function varargout = myops3(a,b) %#codegen
varargout{1} = a+b;
varargout{2} = a*b;
varargout{3} = a/b;
varargout{4} = a-b;
end
function [output1,output2,output3,output4] = myops4(a,b) %#codegen
output1 = a+b;
output2 = a*b;
output3 = a/b;
output4 = a-b;
end

コマンド ラインの入力

コマンド ラインで、codegen 関数を -nargout オプション付きで使用して、引数を 3 つだけ出力する関数を生成します。

codegen myops3 -config:lib -args {0,0} -nargout 3
codegen myops4 -config:lib -args {0,0} -nargout 3

生成される関数シグネチャに含まれる出力引数が 3 つだけになります。

void myops3(double a, double b, double *varargout_1, double *varargout_2,
            double *varargout_3)
void myops4(double a, double b, double *output1, double *output2,
            double *output3)

MATLAB Coder アプリの使用

MATLAB Coder アプリを使用する場合、出力引数の数を制御する方法は、関数で varargout を使用しているかどうかによって異なります。

MATLAB 関数で vargout を使用している場合、その関数の出力引数は 1 つであると仮定されます。アプリの [エントリ ポイント] ペインで、関数シグネチャに vargout{1} と表示されます。出力の数を変更するには、varargout 引数をクリックし、目的の出力数を入力します。

Entry Points pane, showing function myops3 with 3 outputs

MATLAB 関数で vargout を使用していない場合、アプリの [エントリ ポイント] ペインで、関数シグネチャに出力引数が表示されます。1 つ以上の出力引数を無効にするには、いずれかの出力引数をクリックします。クリックした出力引数とその右にあるすべての引数が無効になります。無効になった出力は薄い色で表示され、取り消し線が付けられます。

Entry Points pane, showing function myops4 with 3 outputs

参考

| | |

トピック