ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

coder.extrinsic

パッケージ: coder

構文

coder.extrinsic('function_name');

coder.extrinsic('function_name_1', ... , 'function_name_n');

coder.extrinsic('-sync:on', 'function_name');

coder.extrinsic('-sync:on', 'function_name_1', ... , 'function_name_n');

coder.extrinsic('-sync:off','function_name');

coder.extrinsic('-sync:off', 'function_name_1', ... , 'function_name_n');

引数

function_name
function_name_1, ... , function_name_n

function_name または function_name_1 から function_name_n を外部関数として宣言します。

–sync:on

function_name または function_name_1 から function_name_n

外部関数 function_name または function_name_1 から function_name_n の呼び出しの前後で、MATLAB® と MEX 関数との間のグローバル データの同期を有効にします。ごく一部の外部関数でしかグローバル データが変更されない場合は、グローバル同期モードを At MEX-function entry and exit に設定してすべての外部関数の呼び出しの前後で同期を無効にします。グローバル データを "修正する" 外部呼び出しに対してのみ、–sync:on オプションを使用して同期を有効にします。

–sync:off

外部関数 function_name または function_name_1 から function_name_n の呼び出しの前後で、MATLAB と MEX 関数との間のグローバル データの同期を無効にします。大半の外部呼び出しがグローバル データを変更し、少数の外部呼出しがこれを行わない場合は、–sync:off オプションを使用して、外部呼び出しの同期化をオフにし、グローバル データを "変更しない" ことができます。

説明

coder.extrinsic は、外部関数を宣言します。シミュレーション中、コード生成ソフトウェアは外部関数への呼び出しに対してコードを生成しますが、関数の内部コードは生成しません。したがって、シミュレーションを実行できるのは、MATLAB ソフトウェアがインストールされているプラットフォーム上に限定されます。MATLAB は、スタンドアロンでコード生成中に、外部関数が呼び出し元の関数の出力に影響を与えるかどうか判断しようとします。たとえば、出力変数に mxArrays を返すことで、これを実行します出力に変化がない場合、MATLAB はコード生成を進めますが、生成コードからは外部関数を除外します。それ以外の場合はコンパイル エラーが発生します。

coder.extrinsic を使用して外部関数と宣言した関数では、coder.ceval を使用することはできません。

コード生成の範囲外では、関数 coder.extrinsic は無視されます。

ヒント

  • コード生成ソフトウェアでは plotdispfigure などの多くの一般的な可視化関数の呼び出しを検出します。このソフトウェアは、これらの関数を外部関数として扱いますが、関数 coder.extrinsic を使用してそれらの関数を外部宣言する必要はありません。

  • 外部関数として宣言しなければならない関数を検出するには、coder.screener を使用します。この関数は、MATLAB コードのコード生成の問題を検出するコード生成の準備状態ツールを開きます。

    コード生成中に、MATLAB は外部関数が呼び出し元の関数の出力に影響を与えるかどうか判断しようとします。たとえば、出力変数に mxArrays を返すことによって、これを実行します。出力に変化がない場合、MATLAB はコード生成を進めますが、生成コードからは外部関数を除外します。それ以外の場合、MATLAB はコンパイラ エラーを発行します。

以下のコードは、MATLAB ローカル関数 create_plot で、MATLAB 関数 patch および axis を外部関数として宣言します。

function c = pythagoras(a,b,color) %#codegen
% Calculates the hypotenuse of a right triangle
%  and displays the triangle as a patch object. 

c = sqrt(a^2 + b^2);

create_plot(a, b, color);

function create_plot(a, b, color)
%Declare patch and axis as extrinsic

coder.extrinsic('patch', 'axis'); 

x = [0;a;a];
y = [0;0;b];
patch(x, y, color);
axis('equal');

これらの関数を外部関数として宣言することにより、patch および axis のコード生成やコンパイルを行わないようソフトウェアに指示します。その代わりに、これらの関数は実行のために MATLAB に送られます。

この情報は役に立ちましたか?