Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

複数のシグネチャをサポートする 1 つの MEX 関数の生成

エントリポイント関数は、コードを生成する最上位の MATLAB® 関数です。エントリポイント関数に入力がある場合、MEX 関数を生成するには入力のプロパティを指定しなければなりません。この場合、生成された MEX 関数は、コード生成中に指定したエントリポイント関数のシグネチャでのみ動作します。

エントリポイント関数で複数のシグネチャがサポートされている場合は、シグネチャごとに個別の MEX 関数を生成する代わりに、1 つの MEX 関数を生成できます。生成された MEX 関数は、コード生成中に指定した複数のシグネチャで動作します。

複数シグネチャの MEX 機能を使用すると、以下のことができます。

  • エントリポイント関数で指定した複数のシグネチャをサポートする 1 つの MEX 関数を生成する。

  • エントリポイント関数のシグネチャごとに個別の MEX 関数を生成して使用するためのオーバーヘッドを削減する。

  • 生成された MEX 関数で MATLAB 関数のような動作を実現する。

複数シグネチャの MEX 関数の生成

複数シグネチャの MEX 関数を生成するために、次の関数 myAdd を考えてみます。

function y = myAdd(a,b)
%#codegen
y = a+b;
end
myAdd から、3 つの異なるデータ型 doubleint8 および vector of doubles で動作する MEX 関数を生成するとします。3 つの引数を {1,2}{int8(2), int8(3)} および {1:10, 1:10} として指定します。

myAdd 関数のコードを生成するには、MATLAB コマンド ラインで次の codegen コマンドを実行します。

codegen -config:mex myAdd.m -args {1,2} -args {int8(2),int8(3)} -args {1:10,1:10} -report
この構文により、codegen コマンドで指定したシグネチャに対して 1 つの MEX 関数 myAdd_mex が生成されます。

コマンド ラインで、生成された MEX 関数 myAdd_mex を呼び出します。myAdd_mex に渡す値が codegen コマンドで指定した入力プロパティと一致することを確認します。

myAdd_mex(3,4)
ans =

     7
myAdd_mex(int8(5),int8(6))
ans =

  int8

   11
myAdd_mex(1:10,2:11)
ans =

     3     5     7     9    11    13    15    17    19    21

これらの入力値を使用して MATLAB 関数 myAdd を実行すると、同じ出力が生成されます。これらのテスト ケースでは、myAddmyAdd_mex が同じ動作になることを検証します。

制限

複数シグネチャの MEX の生成では以下はサポートされません。

参考

|

関連するトピック