| 外部インタフェース/API リファレンス | ![]() |
MATLAB関数またはユーザ定義のM-ファイルやMEX-ファイルの呼び出し
C 言語表示
#include "mex.h" int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *command_name);
引数
nlhs
希望する出力引数の数。この値は、50以下でなければなりません。
plhs
mxArrayからなる配列のポインタ。呼び出されるコマンドは、結果のmxArrayのポインタをplhsに置きます。呼び出されるコマンドは、mxArrayを格納するためにダイナミックメモリを割り当てることに注意してください。MATLABはデフォルトで、MEX-ファイルをクリアするときにこのダイナミックメモリの割り当てを自動的に外します。しかし、ヒープ領域を多く確保しておきたい場合は、plhsが指し示すmxArrayをもって終了した後すぐにmxDestroyArrayを呼び出して開放することができます。
nrhs
prhs
command_name
command_nameが演算子の場合、シングルコートの組の中に演算子を置きます(例'+')。
戻り値
詳細
mexCallMATLABを呼び出すことによって、内部のMATLAB数値関数、MATLAB演算子、M-ファイル、MEX-ファイルを呼び出します。引数の詳しい説明は、mexFunctionを参照してください。
デフォルトでは、command_nameがエラーを検出した場合、MATLABはMEX-ファイルを終了し、制御をMATLABプロンプトに戻します。他のエラー動作を行いたい場合は、mexSetTrapFlagを呼び出してtrapフラグをonにしてください。
mexCallMATLABを使ってタイプmxUNKNOWN_CLASSのオブジェクトを生成することが可能です。たとえば、2つの変数を出力し、それらのうちの1つのみに値を割り当てるM-ファイルを作成する場合
function [a,b]=foo[c] a=2*c;
Warning: One or more output arguments not assigned during call to 'foo'.
MATLABは、出力bに空行列を割り当てます。それから、mexCallMATLABを使ってfooを呼び出す場合は、割り当てられていない出力変数は、 mxUNKNOWN_CLASSです。
例題
examplesディレクトリのmexサブディレクトリのmexcallmatlab.cを参照してください。
さらに、examplesディレクトリのrefbookサブディレクトリのsincall.c、examplesディレクトリのmexサブディレクトリのmexevalstring.cとmexsettrapflag.c; examplesディレクトリのmxサブディレクトリのmxcreatecellmatrix.cとmxisclass.cを参照してください。
参考
| mexAtExit | mexErrMsgTxt | ![]() |