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