mexCallMATLAB (Fortran)
MATLAB 関数、ユーザー定義関数または MEX ファイルの呼び出し
Fortran 構文
#include "fintrf.h" integer*4 mexCallMATLAB(nlhs, plhs, nrhs, prhs, functionName) integer*4 nlhs, nrhs mwPointer plhs(*), prhs(*) character*(*) functionName
引数
nlhs
出力引数の数。50 以下でなければなりません。
plhs
出力引数へのポインターの配列
注意
mexCallMATLAB
のplhs
引数は、mexFunction
のplhs
とは異なります。mexFunction
のplhs
に返されたmxArray
は破棄しないでください。nrhs
入力引数の数。50 以下でなければなりません。
prhs
入力引数へのポインターの配列
functionName
呼び出し対象の MATLAB® 組み込み関数、演算子、ユーザー定義関数または MEX 関数の名前を含む文字列。
functionName
が演算子である場合は、'+'
のようにこの演算子を一重引用符で囲みます。
戻り値
成功した場合は 0
、失敗した場合は非ゼロ値。
説明
mexCallMATLAB
を呼び出して、内部の MATLAB 数値関数、MATLAB 演算子、ユーザー定義関数、または他の MEX ファイルを呼び出します。mexCallMATLAB
と mexEvalString
の両方が MATLAB コマンドを実行します。結果 (左辺引数) を MEX 関数に返すには、mexCallMATLAB
を使用します。関数 mexEvalString
は、MEX 関数に値を返しません。
functionName
に渡される入力引数と出力引数の詳細な説明は、mexFunction
を参照してください。
エラー処理
functionName
がエラーを検出した場合、MATLAB は MEX ファイルを終了し、制御を MATLAB プロンプトに戻します。エラーをトラップするには、関数 mexCallMATLABWithTrap
を使用します。
制限
Simulink® の S-Function では関数
mexCallMATLAB
を使用しないでください。使用する場合は、MEX 関数の終了後に存続する S-Function ブロックの状態に、結果のplhs
mxArray
ポインターを格納しないでください。mexCallMATLAB
の出力には一時スコープがあります。また、この出力は MEX 関数の呼び出しの終了時に自動的に破棄されます。mexCallMATLAB
を使用してmxUNKNOWN_CLASS
型のオブジェクトを生成することが可能です。たとえば、この関数は 2 つの変数を返しますが、値はその一方のみに代入されています。function [a,b] = foo(c) a = 2*c;
mexCallMATLAB
を使用してfoo
を呼び出した場合、割り当てられていない出力変数の型はmxUNKNOWN_CLASS
になります。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
ここで filename
は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename
は、次のようになります。
ヒント
MATLAB は、動的メモリを割り当てて、
mexCallMATLAB
のplhs
に配列を格納します。MATLAB は、MEX ファイルがクリアされたときに動的メモリの割り当てを自動的に解除します。ただし、ヒープ領域が不足している場合は、plhs
にある配列の操作の終了時に関数mxDestroyArray
を呼び出します。
バージョン履歴
R2006a より前に導入