外部インタフェース/API | ![]() ![]() |
本章では、C言語でMEX-ファイルを作成する方法を説明します。MEX-ファイル本体、これらのC言語ファイルがMATLABとどのように作用するか、異なるデータタイプの引数をどのように渡して操作するか、MEX-ファイルプログラムのデバッグ方法、その他のアドバンスドトピックスについて説明します。
C MEX-ファイル
C MEX-ファイルは、APIルーチンの呼び出しを使ってCソースコードをコンパイルするために、mex
スクリプトを使って作られます。
C MEX-ファイルの部分
MEX-ファイルのソースコードは、2つの部分から成り立ちます。
mexFunction
とパラメータprhs
, nrhs
, plhs
, nlhs
により、計算ルーチンとMATLABのインタフェースを行うゲートウェイルーチン。ここで、prhs
は右辺入力引数の配列、nrhs
は右辺入力引数の数、plhs
は左辺出力引数の配列、nlhs
は左辺出力引数の数です。ゲートウェイは、計算ルーチンをサブルーチンとして呼び出します。ゲートウェイルーチンでは、mxArray
構造体のデータにアクセスでき、このデータをCの計算ルーチン内で操作します。たとえば、mxGetPr(prhs[0])
は、prhs[0]
で示されたmxArray
の実数データへのタイプdouble *
のポインタを出力します。それから、このポインタをCの他のタイプdouble *
のポインタのように使うことができます。ゲートウェイからユーザのC計算ルーチンをコールした後で、出力するデータへのタイプmxArray
のポインタを設定できます。それで、MATLABはユーザの計算ルーチンからの出力をMEX-ファイルからの出力と認識できます。
つぎの図「C MEXサイクル」は、どのように入力がMEX-ファイルに入るか、ゲートウェイ関数がどの関数を実行するか、どのようにMATLABに出力するかを示します。
![]() | テクニカルサポート | MEX-ファイルに必要な引数 | ![]() |