| 外部インタフェース/API | ![]() |
MEX-ファイルに必要な引数
MEX-ファイルの2つの成分は分離しているか、結合しています。いずれの場合でも、エントリポイントとインタフェースルーチンが適切に宣言されるために、ファイルはヘッダ#include "mex.h"を含まなければなりません。ゲートウェイルーチン名は常にmexFunctionで、つぎのパラメータを含まなければなりません。
void mexFunction(
int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
/* more C code ... */
パラメータnlhsとnrhsは、MEX-ファイルが呼び込まれる左辺と右辺の引数の数を含みます。MATLAB言語のシンタックスでは、関数は一般につぎの形式です。
[a,b,c,...] = fun(d,e,f,...)
ここで、省略形 (...)は同じ形式の項目の追加を意味します。a,b,c,...は左辺引数で、d,e,f,... は右辺引数です。
パラメータplhsとprhsは、MEX-ファイルの左辺と右辺の引数へのポインタを含むベクトルです。両者ともタイプmxArray *と宣言され、ポイントされた変数がMATLAB配列であることを意味します。prhsはMEX-ファイルへの右辺入力へのポインタを含む長さnrhsの配列で、plhsはユーザの関数が作る左辺出力へのポインタを含む長さnlhsの配列です。たとえば、つぎのコマンドで、MATLABワークスペースからMEX-ファイルを呼び込むと
x = fun(y,z);
MATLABインタプリタはつぎの引数でmexFunctionを呼び出します。

plhsは、要素がnullポインタである1要素のCの配列です。prhsは、1番目の要素がYというmxArrayのポインタで、2番目の要素がZというmxArrayのポインタである2要素のCの配列です。
サブルーチンが実行するまで出力xは作成されないので、パラメータplhs は、何もポイントしません。出力配列を作成し、plhs[0]の配列のポインタを割り当てるのはゲートウェイルーチンです。plhs[0]が割り当てられない場合は、MATLABは出力が割り当てられていないことを示すワーニングメッセージを表示します。
| C言語MEX-ファイルの作成 | C MEX-ファイルの例 | ![]() |