mexCallMATLAB (C)
MATLAB 関数、ユーザー定義関数または MEX 関数の呼び出し
C 構文
#include "mex.h" int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *functionName);
説明
メモ
最新の C++ の機能とC++ 用の MATLAB データ APIを使用して MEX 関数を作成するには、MATLAB (MEX ファイル) から呼び出せる C++ 関数の記述を参照してください。
mexCallMATLAB
を呼び出して、内部の MATLAB® 数値関数、MATLAB 演算子、ユーザー定義関数、または他の MEX 関数を呼び出します。
mexCallMATLAB
と mexEvalString
の両方が MATLAB コマンドを実行します。結果 (左辺引数) を MEX 関数に返すには、mexCallMATLAB
を使用します。関数 mexEvalString
は、MEX 関数に値を返しません。
入力引数
出力引数
エラー処理
functionName
がエラーを検出した場合、MATLAB は MEX 関数を終了し、制御を MATLAB プロンプトに戻します。エラーをトラップするには、関数 mexCallMATLABWithTrap
を使用します。
制限
Simulink® の S-Function では関数
mexCallMATLAB
を使用しないでください。使用する場合は、MEX 関数の終了後に存続する S-Function ブロックの状態に、結果のplhs
mxArray
ポインターを格納しないでください。mexCallMATLAB
の出力には一時スコープがあります。また、この出力は MEX 関数の呼び出しの終了時に自動的に破棄されます。mexCallMATLAB
を使用してmxUNKNOWN_CLASS
型のオブジェクトを生成することが可能です。たとえば、この関数は 2 つの変数を返しますが、値はその一方のみに代入されています。function [a,b] = foo(c) a = 2*c;
mexCallMATLAB
を使用してfoo
を呼び出した場合、割り当てられていない出力変数の型はmxUNKNOWN_CLASS
になります。
例
の次の例を参照してください。matlabroot
/extern/examples/mex
の次の例を参照してください。matlabroot
/extern/examples/refbook
の次の例を参照してください。matlabroot
/extern/examples/mx
ヒント
MATLAB は、動的メモリを割り当てて、
mexCallMATLAB
のplhs
に配列を格納します。MATLAB は、MEX 関数が終了されたときに動的メモリの割り当てを自動的に解除します。ただし、ヒープ領域が不足している場合は、plhs
にある配列の操作の終了時に関数mxDestroyArray
を呼び出します。
バージョン履歴
R2006a より前に導入