Fortran MEX ファイルでのデータ フロー
データ入出力の表示
MEX ファイル myFunction に 2 つの入力引数と 1 つの出力引数が含まれているとします。MATLAB® 構文は [X] = myFunction(Y, Z) です。MATLAB から myFunction を呼び出すには、以下を入力します。
X = myFunction(Y, Z);
MATLAB インタープリターは、myFunction へのゲートウェイ ルーチン mexFunction を以下の引数で呼び出します。

入力は prhs で、2 要素の配列 (nrhs = 2) です。最初の要素は Y という mxArray へのポインターで、2 番目の要素は Z という mxArray へのポインターです。
出力は plhs で、1 要素の配列 (nlhs = 1) です。ここで、この単一の要素は null ポインターになります。出力 X はサブルーチンが実行されるまで作成されないので、パラメーター plhs は何も指しません。
ゲートウェイ ルーチンが出力配列を作成し、配列へのポインターを plhs[0] に設定します。このルーチンが plhs[0] に値を割り当てず、関数の呼び出し時に手動で関数に出力値を割り当てた場合、MATLAB はエラーを生成します。
メモ
nlhs = 0 であっても出力値を返すことは可能です。これは、結果を変数 ans に返すことに相当します。
ゲートウェイ ルーチンのデータ フロー ダイアグラム
この MEX サイクル ダイアグラムは、入力がどのように MEX ファイルに入るか、ゲートウェイ ルーチンがどの関数を実行するか、出力がどのように MATLAB に返されるかを説明します。
この例では、MEX ファイル func の構文は [C, D] = func(A,B) です。この図では、func が呼び出されると、MATLAB は変数 A および B を MEX ファイルに渡します。C および D は割り当てられません。
ゲートウェイ ルーチンは関数 mxCreate* を使用して、出力引数用に MATLAB 配列を作成します。plhs[0] と plhs[1] を新しく作成された MATLAB 配列へのポインターに設定します。関数 mxGet* により、引数 prhs[0] および prhs[1] からデータが抽出されます。最後に、計算ルーチンが呼び出され、入力データおよび出力データのポインターが関数パラメーターとして渡されます。
MATLAB は、plhs[0] を C に、plhs[1] を D に割り当てます。
Fortran MEX サイクル
