このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
coder.extrinsic
外部として関数を宣言し MATLAB で実行
構文
説明
coder.extrinsic(
は function
)function
を外部関数として宣言します。コード ジェネレーターは外部関数の本体のコードを生成せず、代わりに MATLAB® エンジンを使用して呼び出しを実行します。この機能は、実行時に MATLAB エンジンが使用可能な場合にのみ使用できます。MATLAB エンジンが使用可能な状況の例としては、MEX 関数の実行、Simulink® シミュレーション、またはコード生成時 (コンパイル時とも呼ばれる) の関数呼び出しが挙げられます。
スタンドアロン コードの生成中に、コード ジェネレーターは外部関数に副作用のみがあるかどうか (たとえば、プロットを表示することによって)、または呼び出し元の関数の出力に影響を与えるかどうか (たとえば、出力変数に値を返すことによって) を判断しようとします。出力に変化がない場合、コード ジェネレーターはコード生成を進めますが、生成コードから外部関数を除外します。影響する場合、コンパイル エラーが発生します。
coder.extrinsic
を使用して外部関数として宣言した関数では、coder.ceval
を使用することはできません。また、コード生成の範囲外では、coder.extrinsic
命令は無視されます。
生成コードでの MATLAB エンジンを使用した関数呼び出しの実行を参照してください。
メモ
コード ジェネレーターでは、plot
、disp
、figure
など、多くの MATLAB 可視化関数が外部関数として自動的に処理されます。coder.extrinsic
を使用してそれらを外部関数として明示的に宣言する必要はありません。
coder.extrinsic(function1, ... ,functionN)
は function1
から functionN
まで外部関数として宣言します。
coder.extrinsic(
は、外部関数 '-sync:on'
, function1, ... ,functionN)function1
から functionN
までの呼び出しの前後で、MATLAB 実行と生成されたコードの実行または Simulink シミュレーションとの間のグローバル データの同期を有効にします。少数の外部呼び出しのみがグローバル データを使用または変更する場合、グローバル同期モードを At MEX-function entry and exit
に設定してすべての外部関数呼び出しの前後で同期を無効にします。グローバル データを修正する外部呼び出しに対してのみ、'-sync:on'
オプションを使用して同期を有効にします。
MATLAB Coder™ を使用して MEX 関数を生成する場合、'-sync:on'
オプションを使用すると、定数のグローバル データに対しては、外部関数の呼び出し後に MATLAB 関数と MEX 関数との整合性の検証が有効になります。
グローバル データのためのコード生成 (MATLAB Coder)を参照してください。
coder.extrinsic(
は、外部関数 '-sync:off'
, function1, ... ,functionN)function1
から functionN
までの呼び出しの前後で、MATLAB 実行と生成されたコード実行との間のグローバル データの同期を無効にします。少数の外部呼び出しを除き、ほとんどの外部呼び出しでグローバル データを使用または修正する場合、グローバル データを修正しない外部呼び出しに対しては、'-sync:off'
オプションを使用して同期を無効にします。
MATLAB Coder を使用して MEX 関数を生成する場合、'-sync:off'
オプションを使用すると、定数のグローバル データに対しては、外部関数の呼び出し後に MATLAB 関数と MEX 関数との整合性の検証が無効になります。
グローバル データのためのコード生成 (MATLAB Coder)を参照してください。
例
入力引数
制限
外部関数呼び出しには、パフォーマンスに影響する可能性のある何らかのオーバーヘッドがあります。外部関数呼び出しで渡される入力データは MATLAB に指定しなければなりません。これにはデータのコピー作成が必要になります。関数に出力データが含まれている場合、このデータは MEX 関数環境に再転送しなければなりません。これにもコピーが必要になります。
コード ジェネレーターは、
coder.extrinsic
を使用したプライベート フォルダー内の関数の呼び出しをサポートしていません。コード ジェネレーターは、
coder.extrinsic
を使用したローカル関数の呼び出しをサポートしていません。
ヒント
コード ジェネレーターでは、
plot
、disp
、figure
など、多くの MATLAB 可視化関数が外部関数として自動的に処理されます。coder.extrinsic
を使用してそれらを外部関数として明示的に宣言する必要はありません。外部関数として宣言しなければならない関数を検出するには、関数
coder.screener
を使用します。この関数は、MATLAB コード内にコード生成でサポートされない機能や関数がないかどうかを調べるコード生成の準備状態ツールを実行します。
拡張機能
バージョン履歴
R2011a で導入