外部インタフェース/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 | ![]() |