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 ブロックの状態に、結果のplhsmxArrayポインターを格納しないでください。mexCallMATLABの出力には一時スコープがあります。また、この出力は MEX 関数の呼び出しの終了時に自動的に破棄されます。mexCallMATLABを使用してmxUNKNOWN_CLASS型のオブジェクトを生成することが可能です。たとえば、この関数は 2 つの変数を返しますが、値はその一方のみに代入されています。function [a,b] = foo(c) a = 2*c;
mexCallMATLABを使用してfooを呼び出した場合、割り当てられていない出力変数の型はmxUNKNOWN_CLASSになります。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mex","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename は、次のようになります。
ヒント
MATLAB は、動的メモリを割り当てて、
mexCallMATLABのplhsに配列を格納します。MATLAB は、MEX 関数が終了されたときに動的メモリの割り当てを自動的に解除します。ただし、ヒープ領域が不足している場合は、plhsにある配列の操作の終了時に関数mxDestroyArrayを呼び出します。
バージョン履歴
R2006a より前に導入