メインコンテンツ

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

出力引数へのポインターの配列

注意

mexCallMATLABplhs 引数は、mexFunctionplhs とは異なります。mexFunctionplhs に返された mxArray は破棄しないでください。

nrhs

入力引数の数。50 以下でなければなりません。

prhs

入力引数へのポインターの配列

functionName

呼び出し対象の MATLAB® 組み込み関数、演算子、ユーザー定義関数または MEX 関数の名前を含む文字列。

functionName が演算子である場合は、'+' のようにこの演算子を一重引用符で囲みます。

戻り値

成功した場合は 0、失敗した場合は非ゼロ値。

説明

mexCallMATLAB を呼び出して、内部の MATLAB 数値関数、MATLAB 演算子、ユーザー定義関数、または他の MEX ファイルを呼び出します。mexCallMATLABmexEvalString の両方が 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 は、動的メモリを割り当てて、mexCallMATLABplhs に配列を格納します。MATLAB は、MEX ファイルがクリアされたときに動的メモリの割り当てを自動的に解除します。ただし、ヒープ領域が不足している場合は、plhs にある配列の操作の終了時に関数 mxDestroyArray を呼び出します。

バージョン履歴

R2006a より前に導入